2011-01-04 5 views
2

それぞれに関連する店頭IDのリストを含むユーザーのリストがあります。私は整数の別のリストを持っており、ユーザーの店頭IDが別のリストにある整数のどこに一致するかを見たいと思っています。Linqは、整数のリストに対して整数の子リストを交差させます。

私はこのような何かを期待している:

clientUsers = clientUsers.Where(x => x.Storefronts.Intersect(allowedStorefrontIds)); 

私は型引数がどこに拡張メソッドの使用状況から推測することはできません聞いています。

この場合、linqをどのように構成するべきかご存知ですか?私は効率のためにこのような何かをするだろう、個人的に

x => x.Storefronts.Intersect(allowedStorefrontIds).Any() 

var allowedIds = new HashSet<int>(allowedStorefrontIds); 

var allowedUsers = clientUsers.Where(x => x.StoreFronts.Any(allowedIds.Contains)); 
+0

あなたの 'Where'句のラムダ式は真であると評価されなければならないと思います。 –

答えて

5

は、あなただけのセットの交差点に要素が含まれている場合はラムダで.Any()をチェックする必要がありますブール式を返す関数。 Intersectはリストを返します。私はclientUsers.Intersect(allowedStorefrontIds)は、コードスニペットに記載されていない別のリストがない限り、期待しているリストを返すべきだと思います。

+1

+1、私はあなたの答えではなく、質問を読んでいないが、私はlinqであなたは常に正しいことを知っている:) –

+0

@シード:ありがとう、それは非常に親切です。しかし、そうではありません。 :) – Ani

+0

+1はHashsetの使用のために見つける – Tahbaza

0

を期待どこ

関連する問題