5

私はMongo LINQ Driver for C#を使用していますが、うまく機能します。

多くのプロパティを並べ替えていますが、解決できない問題があります。おそらく単純です。

var identifierList = new []{"10", "20", "30"};
var newList = list.Where(x => identifierList.Contains(x.Identifier));

This is NOT supported ... 

だから私は次のようなことができます:

 var newList = list.Where(x => x.Identifier == "10" || x.Identifier == "20" || x.Identifier == "30");

しかし、リストは変数なので...どうすれば上記を構築できますか? または、さらに優れた代替手段はありますか?

listタイプですIQueryable<MyCustomClass>

参考までに...これは多くのプロパティのフィルターとして使用されます。SQL では、親 -> 子の関係を持つことができます。しかし、メイン ID の親としてはできないので、すべての ID を取り出して、このように構築する必要があります。

これが理にかなっていることを願っています。必要に応じて、さらに説明します。

4

2 に答える 2

5

私自身の質問に答えるには... Mongo Sharp LINQ ドライバーには、「In」と呼ばれる拡張メソッドがあり、まさに私が必要とすることを行います。

ただし、1.5 で実装されているため、 https ://jira.mongodb.org/browse/CSHARP-462 のような古い方法を使用できます。

 var list = new []{"10", "10"};

 search.Where(x => list.Contains(x.Id));

ただし、バージョン 1.5 パッケージはまだ nuget に含まれていません。

ただし、これは、mongo-csharp-driver で特別な驚きとして提供される "In" 拡張機能で動作するはずです。

 search.Where(x => x.In(list));
于 2012-06-07T09:02:36.057 に答える
0
var identifierList = new []{"10", "20", "30"};
var newList = list.ToList().Where(x => identifierList.Contains(x.Identifier));

Ienumerable の代わりに List を使用する必要があります (.ToList() を使用して行います)。

うまくいかない場合は、リストの種類を追加してください

于 2012-06-06T22:24:39.953 に答える