你需要的東西是這樣的:
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 Method (IEnumerable)
Enumerable.OfType Method
編輯
在您的評論你說那它確信只有一個值目前。你需要兩個單獨的變量是非常重要的嗎?你可以得到的現值,就像這樣:
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;
}
並且如果僅預期其中一個值,則
SomeObject a;
SomeObject b;
foreach(SomeObject so in collection)
{
if(so.Value == something)
{
a = so;
break;
}
else if(so.Value == somethingElse)
{
b = so;
break;
}
}
你能發表你寫的代碼嗎? – TheEvilPenguin
我現在沒有代碼,但是我已經用我想要做的事更新了這個問題。 – Sam
你爲什麼要這樣做?在上面的示例代碼中,'a'和'b'的值將被設置爲最後一個對象以符合它們的標準。這可以嗎? –