我尝试实现用户动态过滤器,其中使用选择一些属性,选择一些运算符并选择值.
由于我没有找到这个问题的答案,我尝试使用LINQ表达式.
主要是我需要确定主要房间是厨房的所有房屋(任何感觉,我知道).
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
//using System.Linq.Dynamic;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
Room aRoom = new Room() { Name = "a Room" };
Room bRoom = new Room() { Name = "b Room" };
Room cRoom = new Room() { Name = "c Room" };
House myHouse = new House
{
Rooms = new List<Room>(new Room[] { aRoom }),
MainRoom = aRoom
};
House yourHouse = …Run Code Online (Sandbox Code Playgroud) 如果您创建一个Filter对象,其中包含Linq的条件,通常在where子句中,如下所示:
var myFilterObject = FilterFactory.GetBlank();
myFilterObject.AddCondition("Salary", "lessThan", "40000");
var myResult = myRepository.GetEmployees(myFilterObject);
Run Code Online (Sandbox Code Playgroud)
如何在不使用大案例陈述的情况下将Linq字段与字段名称匹配?
return from e in db.Employee
where e.Salary < 40000
select new IList<EmployeeViewModel> { Name= e.name, Salary= e.Salary };
Run Code Online (Sandbox Code Playgroud)
我假设您需要将一个对象发送到指定过滤的存储库,以便您只提取所需的记录.我假设Linq没有预编译(除非您创建自定义委托和函数),因此您应该能够动态指定要筛选的字段.
如果你可以像某些类型的Expando对象那样做e ["Salary"]这样的话会很好.