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

D-S*_*ect -1 c# linq lambda .net-3.5

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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

这里几个问题:

我应该使用"选择","在哪里",或者两者都不在这里?

在这里返回过滤后的IList的正确方法是什么?

car*_*ira 14

return myItems.Where(i => i.Name == name).ToList();
Run Code Online (Sandbox Code Playgroud)