返回通过Where或Select扩展方法过滤的通用IList

时间:2011-05-21 00:08:46

标签: c# linq .net-3.5 lambda

public class MyItem
{
    public string Name { get; set; }

    public IList<MyItem> ListByName(string name)
    {
        IList<MyItem> myItems = new List<MyItem>();

        myItems.Add(new MyItem() { Name = "Item 1" });
        myItems.Add(new MyItem() { Name = "Item 2" });
        myItems.Add(new MyItem() { Name = "Item 3" });
        myItems.Add(new MyItem() { Name = "Item 3" });

        return (IList<MyItem>) myItems.Select(i => i.Name == name);
    }
}

我最初得到了一个强制转换异常(IEnumerable to IList),并且显式转换在这里不起作用。

我的目标是返回一个IList,其中MyItem.Name属性等于方法的参数。

这里几乎没有问题:

我应该使用“选择”,“在哪里”,或者两者都没有?

在此处返回已过滤的IList的正确方法是什么?

1 个答案:

答案 0 :(得分:14)

return myItems.Where(i => i.Name == name).ToList();