2011-10-28 11 views
7

linqクエリを見つけようとしていますので、if文で書くことができます。リストにはlinqのIDが含まれています

擬似コード:

IDListは>

if (IDList.Contains (Object.Id)) Do something 

int型のリスト< int型のリストですが、私は必要なものを動作するように見えることはできません。

foreach(int id in IDList) 
    { 
     if (id == Object.Id) 
      break; 
    } 

を私は可能であれば1行でそれをしたい:

なし-LINQでは、これは動作します。

私が最初にこの試みた:

IDList.Contains(Object.Id); 

をしかし、これは以下の二つのうちの一つでなければなりません、私は思ったんだけど、コンパイルエラー

を投げますか?

IDList.Any(id => id == Object.Id) 

または

IDList.Exists(id => id == Object.Id); 

ラムダと物事がどのように働くか、私は完全に理解していないか、アンディとの違いとは、私は私が間違っている線に沿ってんだかはわからないので、存在していますか?

+0

あなたがしたいことは論理的に説明できますか?これは質問ではっきりしていないためです – Ankur

答えて

17

あなたは、単にこれを行うことができます。MyListIEnumerable<T>(またはIEnumerable<T>から派生もの)であると仮定すると

if (MyList.Any(c => c.Id == MyObject.Id)) { } 

をTは、プロパティの同じタイプのIdという名前のプロパティを持つオブジェクトですIdMyObjectインスタンスであなたの述語を満たす少なくとも一つの要素は、存在する場合

5
IDList.Any(id => id == Object.Id) 

はOKですが、それはあなたのtrueを返します。

関連する問題