次のようなものが必要です。
var a = collection.OfType<YourCollectionElementType>().FirstOrDefault(i=>i.Equals(something));
var b = collection.OfType<YourCollectionElementType>().FirstOrDefault(i=>i.Equals(somethingelse));
コレクションはIEnumerable
、少なくともこのコードを使用できるように実装する必要があります。コレクションのタイプによって異なります。それがジェネリックを実装している場合、または配列であるIEnumerable<T>
と言うと、使用する必要はありません。List<YourCollectionElementType>
YourCollectionElementType[]
OfType<T>
var a = collection.FirstOrDefault(i=>i.Equals(something));
var b = collection.FirstOrDefault(i=>i.Equals(somethingelse));
コレクションにその値が含まれていない場合、a
および/または値b
を取得するnull
場合。
実際、これらはすべて MSDN で読むことができます。LINQ を習得するのはそれほど難しくありません。たとえば、次のようにします。
Enumerable.FirstOrDefault メソッド (IEnumerable)
Enumerable.OfType メソッド
編集
あなたのコメントでは、値が1つしか存在しないことが保証されていると言っています。2 つの個別の変数が必要であることは非常に重要ですか? 次のように現在価値を取得できます。
object thevalue = collection.FirstOrDefault(i => i == something || i == somethingelse);
編集
実際には、次のような行を追加しただけで、ループをそのままにしておきます。
SomeObject a;
SomeObject b;
foreach(SomeObject so in collection)
{
if(so.Value == something)
a = so;
else if(so.Value == somethingElse)
b = so;
if(a!=null && b!=null)
break;
}
そして、値の 1 つだけが期待される場合、
SomeObject a;
SomeObject b;
foreach(SomeObject so in collection)
{
if(so.Value == something)
{
a = so;
break;
}
else if(so.Value == somethingElse)
{
b = so;
break;
}
}