我想在列表中获取对象。我有以下代码
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
答案 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 == ...);