代码之家  ›  专栏  ›  技术社区  ›  Edward Tanguay

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

  •  0
  • Edward Tanguay  · 技术社区  · 15 年前

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

    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;
            }
        }
    }
    
    2 回复  |  直到 15 年前
        1
  •  6
  •   Stan R.    15 年前

    在哪里? 返回 可枚举的 不是单一的结果和使用 作为 不抛出异常并将其强制转换为空,需要使用 单个或默认值()

    return products.Where(p => p.ProductNumber == productNumber).SingleOrDefault();
    
        2
  •  1
  •   TravisWhidden    15 年前

    不要把它铸造成产品,它已经是产品了。

    返回products.where(p=>p.productNumber==productNumber).FirstOrDefault())

    如果为空,则表示它不存在,如果找到某个对象,则返回该对象。

    试试看。