gpt4 book ai didi

C# Lambda 问题

转载 作者:行者123 更新时间:2023-11-30 21:20:52 24 4
gpt4 key购买 nike

可能是一些简单的事情,但由于我是 lambda 表达式的新手,所以这个问题回避了我:

m => m.contactID == contactID && m.primaryAddress == true && (m.addressTypeID == 2 || m.addressTypeID == 3)

我尝试使用那个 lambda 表达式,但我收到了一个无效的运算符。有没有一种方法可以简化它以使其起作用?

编辑:

等效的 sql 查询是:

SELECT *
FROM Contact
WHERE contactID = 3
AND primaryAddress = 1
AND (addressTypeID = 2 OR addressTypeID = 3)

我有一个像这样定义的存储库函数:

public E Single(Expression<Func<E, bool>> where)
{
return objectSet.Single<E>(where);
}

我将上面的 lambda 表达式传递给这个函数:

myRepository.Single(m => m.contactID == contactID && m.primaryAddress == true && (m.addressTypeID == 2 || m.addressTypeID == 3));

最佳答案

如果您收到 InvalidOperationException,最可能的原因是有多个记录符合您的条件。

Queryable.Single如果有多个正确值,将引发 InvalidOperationException。在这种情况下,请尝试使用 .First(m => ..)相反:

myRepository.First(m => 
m.contactID == contactID &&
m.primaryAddress == true &&
(m.addressTypeID == 2 || m.addressTypeID == 3)
);

这将返回第一个匹配结果,如果有多个。如果您不需要处理任何匹配项,请查看 FirstOrDefault (如果没有匹配项将返回 null)。

关于C# Lambda 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3048839/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com