我有一个类,我想将数据列表传递给该类。我想要这门课
- 返回整个数据集中的供应商列表
- 按我作为参数的条件过滤数据,并将过滤后的结果作为第二个可枚举列表返回。
我已经添加了 IQueryable
条件作为我想要实现的伪代码。这可能吗?
internal class Problem
{
public IEnumerable<Vendor> Vendors { get; set; }
public IEnumerable<Class1> ReturnedData { get; set; }
public Problem(List<Class1> data, IQueryable condition)
{
Vendors = data.SelectMany(d => d.Vendors).Select(v => v.VendorName).Distinct().Select(v => new Vendor {VendorName = v}).ToList();
ReturnedData = data.AsQueryable().Where(condition);
}
}
internal class Class1
{
public IEnumerable<Vendor> Vendors { get; set; }
// lots of other stuff
}
internal class Vendor
{
public object VendorName { get; set; }
}
最佳答案
我会略有不同。
首先安装nuget包System.Linq.Dynamic
Install-Package System.Linq.Dynamic
在那之后, `IQueryable 的 Where 函数将支持字符串作为参数。所以你可以这样做:
protected static IQueryable<T> ApplyGridFilter<T>(IQueryable<T> query)
{
var qText = "id == 1";
query = query.Where(qText);
return query;
}
好处是您可以轻松地在客户端构建 where 条件,而无需创建 Func<Class1, bool>>
关于c# - 将 IQueryable 作为参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38879017/