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を使い続けて、条件を追加したいと思います。条件のつづりが間違っている場合などに例外が発生する可能性があることは承知していますが、それは許容されます (try catchs による)。文字列を解析してパラメーターなどを構築したくありません。チャンスはありますか?

どうもありがとうございました!

4

2 に答える 2

1

Dynamic 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 に答える