将动态WHERE子句组装到LINQ语句的最佳方法是什么?
我在表单上有几十个复选框,并将它们传递回:Dictionary <string,List <string >>(Dictionary <fieldName,List <values >>)到我的LINQ查询.
public IOrderedQueryable<ProductDetail> GetProductList(string productGroupName, string productTypeName, Dictionary<string,List<string>> filterDictionary)
{
var q = from c in db.ProductDetail
where c.ProductGroupName == productGroupName && c.ProductTypeName == productTypeName
// insert dynamic filter here
orderby c.ProductTypeName
select c;
return q;
}
Run Code Online (Sandbox Code Playgroud) 考虑我们有这个类:
public class Data
{
public string Field1 { get; set; }
public string Field2 { get; set; }
public string Field3 { get; set; }
public string Field4 { get; set; }
public string Field5 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
如何动态选择指定列?这样的事情:
var list = new List<Data>();
var result= list.Select("Field1,Field2"); // How ?
Run Code Online (Sandbox Code Playgroud)
这是唯一的解决方案=> 动态LINQ 吗?
编译时不知道所选字段.它们将在运行时指定
我想使用表达式树动态生成以下select语句:
var v = from c in Countries
where c.City == "London"
select new {c.Name, c.Population};
Run Code Online (Sandbox Code Playgroud)
我已经研究出如何生成
var v = from c in Countries
where c.City == "London"
select new {c.Name};
Run Code Online (Sandbox Code Playgroud)
但我似乎无法找到一个构造函数/重载,让我在select lambda中指定多个属性.
我想要的是,而不是做
var carsPartial = cars.Select("new(name, year)").ToList();
我想做这个:
var carsPartial = cars.Select<car>("new car(name, year)").ToList<car>();
Run Code Online (Sandbox Code Playgroud)
再次感谢,如果需要请求澄清.
车类:
public class car
{
public string name { get; set; }
public int year { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
什么在汽车:一堆汽车数据的名称和年份有点像数据库.