[英]How can I retrieve an object from a generic list based on the value of two of that object's members?
[英]How can I get an item from a generic list based on two conditions?
我有一个自定义类型的通用列表,我正在尝试取回一个类型实例。 我已经使用需要为真的两个条件尝试了“FirstOrDefault”和“Where”,但它们都给了我相同的错误信息(“运算符‘&&’不能应用于‘lambda表达式’类型的操作数和'lambda 表达式'")
他们来了:
// FirstOrDefault
UnitItemCodeItemID uicii =
unitItemCodeItemIDList
.FirstOrDefault((u => u.Unit == _unit) && (d => d.Description == desc));
// Where
UnitItemCodeItemID uicii =
unitItemCodeItemIDList
.Where((u => u.Unit == _unit) && (d => d.Description == desc));
我不知道这是否相关,但课程是:
public class UnitItemCodeItemID
{
public string Unit { get; set; }
public string Description { get; set; }
public string ItemCode { get; set; }
public int ItemID { get; set; }
}
您只需要提供一个 lambda:
UnitItemCodeItemID uicii = unitItemCodeItemIDList
.FirstOrDefault(obj => obj.Unit == _unit && obj.Description == desc);
可以这样想:这就像在函数中编写 foreach 循环一样。 像这样:
public UnitItemCodeItemID ExtractFirst(IEnumerable<UnitItemCodeItemID> unitItemCodeItemIDList)
{
foreach(var obj in unitItemCodeItemIDList)
{
if (obj.Unit == _unit && obj.Description == desc)
return obj;
}
return null;
}
您的 Lamba 必须提供“if”部分,其余部分在 Linq 实现中。
您需要提供一个封装了这两个条件的 lambda 表达式
.Where(p => p.Unit == _unit && p.Description == desc);
您之前的尝试是尝试将两个单独的 lambda 表达式与and
语句组合在一起。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.