如何使用LINQ从List <>中获取自定义对象?

Edw*_*uay 0 c# linq

在下面的示例中,为什么产品为空?

using System.Collections.Generic;
using System.Linq;

namespace TestEventsds343
{
    public class Program
    {
        static void Main(string[] args)
        {
            Product product = Product.LoadProduct(222);
        }
    }

    public class Product
    {
        public int ProductNumber { get; set; }
        public string Name { get; set; }
        public string Description { get; set; }

        public static Product LoadProduct(int productNumber)
        {
            List<Product> products = new List<Product>();
            products.Add(new Product { ProductNumber = 111, Name = "Intel CPU", Description = "Newest model, very fast." });
            products.Add(new Product { ProductNumber = 222, Name = "Philips Monitor", Description = "22-inch, very nice." });
            products.Add(new Product { ProductNumber = 333, Name = "Sony Camera", Description = "10 Megapixels, sharp pictures." });

            return products.Where(p => p.ProductNumber == productNumber) as Product;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Sta*_* R. 6

返回一个IEnumerable的不是一个单一的结果,并使用作为不抛出异常,只是蒙上它为空,你需要使用的SingleOrDefault()

return products.Where(p => p.ProductNumber == productNumber).SingleOrDefault();
Run Code Online (Sandbox Code Playgroud)