Linq 如何将IEnumerable转换为亚音速集合?

Linq 如何将IEnumerable转换为亚音速集合?,linq,subsonic,ienumerable,collections,Linq,Subsonic,Ienumerable,Collections,真是个尴尬的问题——我收集了亚音速数据,然后用Where过滤掉了一些数据 MyColl.Where(it => it.foo()==true) 现在我想把这些数据仍然作为亚音速收集来传递。怎么做(最恰当的方式)?我检查了亚音速集合的构造函数、ToX()方法和谷歌搜索 编辑:亚音速2.x系列 提前感谢您,很抱歉提出了一个幼稚的问题。在亚音速2.x中,在对数据库重新执行查询之前,不会使用Where()过滤数据。我假设在3.0中也是这样。在2.x中有一个.Filter()方法,它可以完成您要查

真是个尴尬的问题——我收集了亚音速数据,然后用Where过滤掉了一些数据

MyColl.Where(it => it.foo()==true)
现在我想把这些数据仍然作为亚音速收集来传递。怎么做(最恰当的方式)?我检查了亚音速集合的构造函数、ToX()方法和谷歌搜索

编辑:亚音速2.x系列


提前感谢您,很抱歉提出了一个幼稚的问题。

在亚音速2.x中,在对数据库重新执行查询之前,不会使用Where()过滤数据。我假设在3.0中也是这样。在2.x中有一个.Filter()方法,它可以完成您要查找的内容

.Filter()方法被添加到生成的类中。下面是我的外观(它是从默认值定制的):

//
///根据设置的条件筛选现有集合。这是一个内存中的过滤器。
///保留所有现有位置。
/// 
///TblSomethingOrOtherCollection
公共TBLSOMETHINGOR其他收集过滤器(亚音速,其中w)
{
返回过滤器(w,假);
}
/// 
///根据设置的条件筛选现有集合。这是一个内存中的过滤器。
///如果不需要,可以清除现有位置。
/// 
///TblSomethingOrOtherCollection
公共TblSomethingOrOtherCollection过滤器(亚音速Where w,布尔ClearWhere)
{
如果(净空)
{
这个。在哪里。清除();
}
在此处添加(w);
返回过滤器();
}
/// 
///根据设置的条件筛选现有集合。这是一个内存中的过滤器。
///感谢开发克里斯!
/// 
///TblSomethingOrOtherCollection
公共TblSomethingOrOtherCollection筛选器()
{
对于(int i=this.Count-1;i>-1;i--)
{
TblSomethingOrOther o=此[i];
foreach(亚音速,其中w在这里,Where在这里)
{
bool-remove=false;
System.Reflection.PropertyInfo pi=o.GetType().GetProperty(w.ColumnName);
if(pi!=null&&pi.CanRead)
{
object val=pi.GetValue(o,null);
if(w.ParameterValue为数组)
{
数组paramValues=(数组)w.ParameterValue;
foreach(参数值中的对象arrayVal)
{
remove=!Utility.IsMatch(w.Comparison、val、arrayVal);
如果(删除)
打破
}
}
其他的
{
remove=!Utility.IsMatch(w.Comparison,val,w.ParameterValue);
}
}
如果(删除)
{
本条。删除(o);
打破
}
}
}
归还这个;
}
}

在亚音速2.x中,在对数据库重新执行查询之前,数据实际上不会用Where()过滤掉。我假设在3.0中也是这样。在2.x中有一个.Filter()方法,它可以完成您要查找的内容

.Filter()方法被添加到生成的类中。下面是我的外观(它是从默认值定制的):

//
///根据设置的条件筛选现有集合。这是一个内存中的过滤器。
///保留所有现有位置。
/// 
///TblSomethingOrOtherCollection
公共TBLSOMETHINGOR其他收集过滤器(亚音速,其中w)
{
返回过滤器(w,假);
}
/// 
///根据设置的条件筛选现有集合。这是一个内存中的过滤器。
///如果不需要,可以清除现有位置。
/// 
///TblSomethingOrOtherCollection
公共TblSomethingOrOtherCollection过滤器(亚音速Where w,布尔ClearWhere)
{
如果(净空)
{
这个。在哪里。清除();
}
在此处添加(w);
返回过滤器();
}
/// 
///根据设置的条件筛选现有集合。这是一个内存中的过滤器。
///感谢开发克里斯!
/// 
///TblSomethingOrOtherCollection
公共TblSomethingOrOtherCollection筛选器()
{
对于(int i=this.Count-1;i>-1;i--)
{
TblSomethingOrOther o=此[i];
foreach(亚音速,其中w在这里,Where在这里)
{
bool-remove=false;
System.Reflection.PropertyInfo pi=o.GetType().GetProperty(w.ColumnName);
if(pi!=null&&pi.CanRead)
{
object val=pi.GetValue(o,null);
if(w.ParameterValue为数组)
{
数组paramValues=(数组)w.ParameterValue;
foreach(参数值中的对象arrayVal)
{
remove=!Utility.IsMatch(w.Comparison、val、arrayVal);
如果(删除)
打破
}
}
其他的
{
remove=!Utility.IsMatch(w.Comparison,val,w.ParameterValue);
}
}
如果(删除)
{
本条。删除(o);
打破
}
}
}
归还这个;
}
}

由于某些原因,我无法让filter的内联方法工作,但它很容易使用,如下所示:

 SubSonic.Where w = new Where();
        w.ColumnName = Product.CatIDColumn.PropertyName;
        w.Comparison = Comparison.Equals;
        w.ParameterValue = "1";

 ProductCollection objFilteredCol = objProdCollection.Where(w).Filter();

出于某种原因,我无法让filter的内联方法工作,但它很容易使用,如下所示:

 SubSonic.Where w = new Where();
        w.ColumnName = Product.CatIDColumn.PropertyName;
        w.Comparison = Comparison.Equals;
        w.ParameterValue = "1";

 ProductCollection objFilteredCol = objProdCollection.Where(w).Filter();

谢谢你们指出版本,我忘了提到它是2.x系列。我看不到筛选器方法。@macias-很抱歉延迟响应!我