c#-与多个条件存在的Linq查询等效

我已经使用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

并有一对一的关系.

我正在为列表实现搜索功能,该功能旨在查找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));
上一篇:CodeGo.net> Linq to SQL与分组依据


下一篇:c#-根据最近相关实体的值选择实体集合