我有一个自定义类型的通用列表,我试图找回一个类型的实例。我已经尝试了两种" FirstOrDefault"和"其中"使用两个必须为真的条件,但它们都给我相同的错误信息("运算符&&&'不能应用于' 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; }
}
答案 0 :(得分:5)
你必须只提供一个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必须提供&#34;如果&#34;部分,其余部分在Linq实现中。
答案 1 :(得分:2)
您需要提供一个封装两个条件的lambda表达式
.Where(p => p.Unit == _unit && p.Description == desc);
您之前的尝试是尝试将两个单独的lambda表达式与and
语句组合在一起。