我已经使用 linq 一段时间了,但在任何地方都没有遇到过这种情况,我的 google-fu 让我失望了。
基本上我有两个我没有定义的数据集,现在必须使用它们来返回数据。
class Header
{
string COMPANY_CODE
string REFERENCE_NBR
string REFERENCE_DUPLICATE
...
}
class Line
{
string COMPANY_CODE
string REFERENCE_NBR
string REFERENCE_DUPLICATE
string STOCK_CODE
string DESCRIPTION
...
}
从数据库的角度来看,他们是这样加入的
select *
from Header
inner join Line
on header.COMPANY_CODE = Line.COMPANY_CODE
and header.REFERENCE_NBR = Line.REFERNCE_NBR
and header.REFERENCE_DUPLICATE = LINE.REFERENCE_DUPLICATE
并且有一个 1:Many 关系。
我正在为列表实现搜索功能,该功能旨在查找 STOCK_CODE 或 DESCRIPTION 中的值与给定搜索词匹配的任何行。我已经看到了几种使用 linq 查询进行连接的方法,但由于存在多个连接条件,我有点不知所措,并且没有找到任何我正在尝试执行的操作的示例。
如果我要在 SQL 中编写我试图在 lamda/linq 中获取的语句,它将是:
declare @searchtxt nvarchar(max) = 'test'
Select *
from header h
where exists (
select *
from Line l
where
(
l.stock_code like '%'+@searchtxt+'%'
or l.description like '%'+@searchtxt+'%'
)
and h.COMPANY_CODE = l.COMPANY_CODE
and h.REFERENCE_NBR = l.REFERENCE_NBR
and h.REFERENCE_DUPLICATE = l.REFERENCE_DUPLICATE
)
如有任何帮助,我们将不胜感激!
最佳答案
也许,这个?
var result = header.Where(h =>
Line.Any(l => (l.stock_code.Contains(searchtxt)
|| l.description.Contains(searchtxt))
&& h.COMPANY_CODE == l.COMPANY_CODE
&& h.REFERENCE_NBR == l.REFERENCE_NBR
&& h.REFERENCE_DUPLICATE == l.REFERENCE_DUPLICATE));
关于c# - Linq 查询等效于存在多个条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54899020/