3

これがどのように機能するかについて少し混乱しています。

class TestClass
{
    public int ID {get;set;}
    public List<Stuff> StuffList {get; set;}
}
class Stuff
{
    public int ID {get;set;}
    public string Description {get;set;}
}

したがって、それぞれTestClassに のリストがStuffあります。私がやりたいのは、のTestClassを含む任意のStuffを見つけることIDです0

List<TestClass> TestList = RetrieveAllTestLists();
//Pseudocode:
//
// Find all TestClass in TestList that contain a Stuff with ID == 0;

私はこれを試しましたが、うまくいきませんでした:

List<TestClass> TestList = RetrieveAllTestLists().Where(x=> x.StuffList.Where(y=> y.ID == 0)).ToList();

誰かが私が間違ったことを説明できますか?

4

2 に答える 2

5

使用できますAny

List<TestClass> TestList = RetrieveAllTestLists().
                           Where(x => x.StuffList.Any(y=> y.ID == 0)).ToList();

基本的Whereに、条件を満たすすべての行 ( を返すものtrue) を選択しますが、この場所には別の がありWhereます。指定された条件を満たす行があった場合にAny返されます。true

于 2013-03-06T17:26:38.597 に答える
0
List<TestClass> TestList = RetrieveAllTestLists().Where(x=> x.StuffList.Any(y=> y.ID == 0)).ToList();

Any() は、少なくとも 1 つの要素または IEnumerable に対して、パラメーターで指定された述語が true を返すことを意味します。

于 2013-03-06T17:27:52.033 に答える