首页 > 解决方案 > 如果在linq中控制?

问题描述

这个查询是我得到的:

var hede = (from customer in _customerRepository.Table
  join source in _sourcedefinitionepository.Table on customer.SourceCode equals source.SourceCode
  select new {Customer = customer, source.SourceName} 

然后我写了这个:

if (agencyName ! = null )
    hede = hede.Where(p => p.Customer.Name.StartsWith(agencyName));

如何将 if 代码放入代码的第一部分?

标签: c#sqllinq

解决方案


你可以通过这种方式实现

where agencyName  == null || customer.Name.StartsWith(agencyName));

完整查询

var hede = (from customer in _customerRepository.Table
join source in _sourcedefinitionepository.Table on customer.SourceCode equals source.SourceCode
where agencyName  == null || customer.Name.StartsWith(agencyName))
select new {Customer = customer, source.SourceName} 

使用 lamda更新。

var hede = _customerRepository.Table.Join(_sourcedefinitionepository.Table, c => c.SouceCode , s => s.SourceCode,
                (c, s) => new
                {
                    Customer = c, 
                    s.SourceName
                })).Where(p => agencyName  == null || p.Customer.Name.StartsWith(agencyName)).ToList();

推荐阅读