如何从列表中获取对象

时间:2012-03-12 09:44:12

标签: c# linq list

我想在列表中获取对象。我有以下代码

List<Product> productList = GetList();

var product = (from p in productList 
                   where p.Id == "xyz"
                   select new Product()
                       {
                           Id = p.Id,
                           -,
                           -
                       });

foreach ( var p in product)
{
    //some code
}

我需要直接将对象转换为var product

3 个答案:

答案 0 :(得分:3)

您可以使用更明智的“方法”-syntax而不是查询语法。

var product = productList.SingleOrDefault(p => p.Id == "xyz");

编辑:您可以使用几种不同的方法来获取您所追求的元素。

.SingleOrDefault()将尝试找到您要查找的项目,如果没有与您的表达式匹配的对象,则返回null(默认值)。

.Single()将执行相同的操作,但如果找不到该对象则会抛出异常。

.FirstOrDefault()将获得与您的表达式匹配的对象列表,并检索第一个对象。如果有多个ID为xyz的对象,则.Single().SingleOrDefault()都会抛出异常。

.First()的工作方式与.FirstOrDefault()类似,但与.Single()类似,如果找不到您要查找的内容,则会抛出异常。

答案 1 :(得分:0)

List<Product> productList = GetList();

var product = (from p in productList 
                   where p.Id == "xyz"
                   select new Product()
                       {
                           Id = p.Id,
                           -,
                           -
                       }).SingleOrDefault();

答案 2 :(得分:0)

您可以使用.SingleOrDefault().Single()

var product = (from p in productList 
                   where p.Id == "xyz"
                   select new Product()
                       {
                           Id = p.Id,
                           -,
                           -
                       }).Single();

如果productList已经是Product的列表,则不要使用Product重建select new对象的新实例。

你可以这样做:

var product = productList.SingleOrDefault(p => p.Id == ...);