0

我有一个这样的 linq 查询:

Elementos = From b In Elementos Where b.Value.IdGrupo = 0 Select b

“Elementos”是一个字典(很长,MyObject)。MyObject 有大约 50 个属性。

我遇到的问题是我有一个新要求来接受带有“where”条件的字符串参数。类似的东西"property1>10 and property2 like 'anystring' or property3<=25"。(这意味着任何属性都可以有条件。我有字符串和数字属性。)

我想继续使用 linq,添加条件。我知道如果条件拼写错误或其他情况,它可能会产生异常,但这是可以接受的(通过尝试捕获)。我不想解析字符串来构建参数或任何东西。我有机会吗?

非常感谢你!

4

2 回答 2

1

您可以使用动态 Linq

Dim filter As String = "property1>10 and property2 like 'anystring' or property3<=25"
Dim results = Elementos.Where(filter)
于 2012-06-05T01:48:46.187 回答
0

您可以尝试这样的事情,您可以通过附加额外的 Where 子句来构造查询。每个子句都将被视为 AND。

public class MyObject
{
    public String Bar {get;set;}
    public String Foo {get;set;}
}

var list = new[] { new MyObject { Foo= "Foo" }, new MyObject { Foo = "Foo", Bar = "Bar" }};
var query = list.Where(o => o.Foo == "Foo");
if(/* Some Condition */)
{
    query = query.Where(o => o.Bar == "Bar");
}
于 2012-06-05T01:31:11.580 回答