我正在尝试完成我认为应该是一件简单的任务,但是发现它比我预期的要复杂得多。
基本上是给定的:
public class MyObject
{
public int A;
public float B;
public string C;
}
List<MyObject> objectList;
我希望能够读取类似以下内容的字符串:
"A < 1"
"B > 0.5"
"C = \"text\""
,然后为每个对象在objectList中获得满足要求的项目列表。
我一直在使用LINQ查询,例如:
objectList.Where(obj => obj.A < 1)
到目前为止,但无法弄清楚如何使用字段名称创建类似的查询。
我缺少一些简单的东西吗?还是我的整个方法有缺陷?
答案 0 :(得分:2)
我认为您可以使用表达式树,您可以创建自己的lambda表达式并将其传递给Where函数。
例如,请检查以下链接:
Dynamically generate LINQ queries
或者您可以使用 System.Linq.Dynamic 命名空间。
答案 1 :(得分:1)
您可以应用AND运算符(&&
):
objectList.Where(obj => obj.A < 1 && obj.B > 0.5 && obj.C == "text").ToList();
编辑:
如果要基于字符串查询,可以使用System.Linq.Dynamic
objectList.Where("string predicate ..");