使用Find方法在通用列表中查找对象

时间:2009-05-12 11:13:38

标签: asp.net find generics predicate

class Cache
{
    int sizeOfCache;//no of RssFeedDocument 
    private List<RssFeedDocument> listOfRssFeedDocument = null;
}

我想根据RssFeedDocument的属性FeedId在课堂上的这个通用列表中找到一个对象。

4 个答案:

答案 0 :(得分:8)

使用匿名委托:

Guid feedID = ...;
RssFeedDocument document = listOfRssFeedDocuments.Find(
    delegate(RssFeedDocument rfd)
    { return rfd.FeedId == feedID; });

同样,但使用C#3.0 lambdas:

Guid feedID = ...;
RssFeedDocument document = 
    listOfRssFeedDocuments.Find(rfd => rfd.FeedId == feedID);

答案 1 :(得分:2)

假设您可以使用IEnumerable<T>扩展方法,我认为最简单的方法实际上是使用Where

listOfRssFeedDocument.Where(doc => doc.FeedId == someId);

答案 2 :(得分:0)

List<RssFeedDocument> filteredList = listOfRssFeedDocument.Find(delegate(RssFeedDocument d) { return d.FeedId = x; });

参考:List<T>.Find

答案 3 :(得分:0)

如果您无法使用LINQ,您可以使用以下内容:

RssFeedDocument fd = ListName.Find(delegate(RssFeedDocument doc) { return doc.FeedID == someVariable; });