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);
ただし、これら 2 つの個別の呼び出しを 1 つに埋め込むこともできます。ただし、使用しているデータ プロバイダーの種類によっては、"プリミティブ型のみを使用" のようなエラーが表示される場合があります。
たとえば、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