list = list.Where(c=>c.CustomerSalesPeople.Count>0).SingleOrDefault();
if(list!=null)
return list.OrderBy(c=>c.CustomerName).ToList();
return list;
或者,如果您认为,CustomerSalesPeople
可以为 null,那么您可以这样做:
list = list.Where(c=>(c.CustomerSalesPeople==null) ||(c.CustomerSalesPeople.Count>0));
if(list!=null)
return list.OrderBy(c=>c.CustomerName).ToList();
return list;
您也可以查看.DefaultIfEmpty()
扩展名。
当发现空结果集时,Linq 提供了出色的扩展方法来应对。他们来了:
- .FirstOrDefault()
- .DefaultIfEmpty()
- .SingleOrDefault()
更新:
做这个:
List<int> uniqueIds= listOfCustomerSalesPerson.Select(s=>s.Id).ToList().Distinct();
var requireListOfCustomers = GetAllCustomers().Where(s=>uniqueIds.Contains(s.id);
不过,您也可以将这两个单独的调用嵌入到一个中。但是根据您使用的数据提供者的种类,它可能会给您一个错误,例如“仅使用原始类型”。因此,单独的 id 列表。
例如,如果您使用的是 EntityFramework 5.0 和 SQL Server,则可以这样做。
myDbContext db= new myDbContext();
var requiredList = db.Customers.Where(s=>
(s.CustomerSalesPeople ==null)
||
(s.CustomerSalesPeople.Select(o=>o.Id).Contains(s.Id))
).ToList();
我假设,客户包含List<CustomerSalesPeople>
,db.CustomerSalesPeople
否则可能