如何根据两个条件从通用列表中获取项目?

B. *_*non -3 c# generics lambda generic-list

我有一个自定义类型的通用列表,我试图找回一个类型的实例.我已尝试使用两个条件"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));
Run Code Online (Sandbox Code Playgroud)

我不知道它是否相关,但课程是:

public class UnitItemCodeItemID
{
    public string Unit { get; set; }
    public string Description { get; set; }
    public string ItemCode { get; set; }
    public int ItemID { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

A. *_*esa 5

你必须只提供一个lambda:

UnitItemCodeItemID uicii = unitItemCodeItemIDList
    .FirstOrDefault(obj => obj.Unit == _unit && obj.Description == desc);
Run Code Online (Sandbox Code Playgroud)

以这种方式思考:它就像在函数中编写foreach循环一样.像这样:

public UnitItemCodeItemID ExtractFirst(IEnumerable<UnitItemCodeItemID> unitItemCodeItemIDList)
{
    foreach(var obj in unitItemCodeItemIDList)
    {
        if (obj.Unit == _unit && obj.Description == desc)
            return obj;
    }
    return null;
}
Run Code Online (Sandbox Code Playgroud)

您的lamba必须提供"if"部分,其余部分在Linq实现中.