1
我想创建linq查询,该查询应该足够动态以获取特定类的所有属性,并为linq中的'where'和'select'构建表达式树。如何将LINQ查询转换为动态查询?
有一个域模型由bool属性和数字属性组成。数字属性将用于范围。
例子:
域模型
public class MakeMeReal
{
public bool isA { get; set; }
public bool isB { get; set; }
public int Type1 { get; set; }
public double Type2 { get; set; }
public double Type3 { get; set; }
public string Type4 { get; set; }
}
输入模型:
public class LinqDynamic
{
public bool isA { get; set; }
public bool isB { get; set; }
public int lowerRangeForTyp1 { get; set; }
public int UpperRangeForTyp1 { get; set; }
public double LowerRangeForType2 { get; set; }
public double UpperRangeForType2 { get; set; }
}
简单的查询:
public void query(LinqDynamic dynamicInput)
{
SampleDbContext db = new SampleDbContext();
var result = from m in db.MakeMeReal
where m.isB == dynamicInput.isB && m.isA == dynamicInput.isA &&
m.Type1 >= dynamicInput.lowerRangeForTyp1 && m.Type1 < dynamicInput.UpperRangeForTyp1 &&
m.Type2 >= dynamicInput.LowerRangeForType2 && m.Type1 < dynamicInput.UpperRangeForType2
select new { a = m.Type1, b = m.Type2, c = m.Type3, d = m.Type4 };
}
我想建立查询将经历域模型和我将构建表达式树,它将针对运行时使用'LinqDynamic'类作为输入参数提供的输入运行。
我有超过10个布尔值和30个范围选择器,布尔值和范围选择器的数量会根据项目需求不断变化,所以每次更改查询都会很头疼。我想使其动态的,因此,它会是不可知的任何变化
我读到https://msdn.microsoft.com/en-us/library/bb397951.aspx和我不能在这里发表由于缺乏信誉点一些其他环节
但我我不知道如何实现它