在列表中找到匹配的最干净的方法

Nic*_*ick 9 c# refactoring

在列表中查找内容的最佳方法是什么?我知道LINQ有一些不错的技巧,但我们也得到了C#2.0的建议.让我们为这个通用代码模式获得最佳重构.

目前我使用这样的代码:

// mObjList is a List<MyObject>
MyObject match = null;
foreach (MyObject mo in mObjList)
{
    if (Criteria(mo))
    {
        match = mo;
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)

要么

// mObjList is a List<MyObject>
bool foundIt = false;
foreach (MyObject mo in mObjList)
{
    if (Criteria(mo))
    {
        foundIt = true;
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)

Kon*_*lph 15

@Konrad:你怎么用它?假设我想将mo.ID与magicNumber匹配.

在C#2.0中你会写:

result = mObjList.Find(delegate(int x) { return x.ID == magicNumber; });
Run Code Online (Sandbox Code Playgroud)

3.0知道lambdas:

result = mObjList.Find(x => x.ID == magicNumber);
Run Code Online (Sandbox Code Playgroud)


Tod*_*odd 5

使用 Lambda 表达式:

List<MyObject> list = new List<MyObject>();

// populate the list with objects..

return list.Find(o => o.Id == myCriteria);
Run Code Online (Sandbox Code Playgroud)