2014-02-14 125 views
1

我有一個linq查詢來獲取來自客戶和客戶聯繫人的所有數據。 但有時我不想要所有的聯繫人,所以我想指定一個條件,如果這個值等於得到聯繫人然後運行查詢。類似太..linq查詢中的條件

switch (options) 
{ 
    case CustomerOptions.DefaultContacts: 
    break; 
} 

我現在有這個LINQ查詢

var customersToReturn = new ContentList<CustomerServiceModel>() 
{ 
    Total = customers.Total, 
    List = customers.List.Select(c => new CustomerServiceModel 
    { 
     Id = c.Id, 
     ContractorId = c.ContractorId, 
     CompanyName = c.CompanyName, 
     Active = c.Active, 
     Address = new Address 
     { 
      Address1 = c.Address1, 
      Address2 = c.Address2, 
      Address3 = c.Address3, 
      Address4 = c.Address4, 
     }, 
     CustomerContacts = c.CustomersContacts.Select(a => new ContactServiceModel 
     { 
      Name = a.Name, 
      Telephone = a.Telephone  
     }).Where(e => e.IsDefault) 
    }).ToList() 
}; 

有沒有一種方法可以讓我設定的條件或做我需要重複這個過程兩次只是一個客戶,一個客戶和客戶聯繫?

+0

確切的情況是什麼? – ekad

回答

1

如果我理解正確的話,你想要CustomServiceModel的某些對象有CustomerContacts,而其他的沒有?然後我會那樣做

List = customers.List.Select(c => new CustomerServiceModel 
         { 
          Id = c.Id, 
          ContractorId = c.ContractorId, 
          CompanyName = c.CompanyName, 
          Active = c.Active, 
          Address = new Address 
          { 
           Address1 = c.Address1, 
           Address2 = c.Address2, 
           Address3 = c.Address3, 
           Address4 = c.Address4, 
          }, 
          CustomerContacts = condition ? 
           c.CustomersContacts.Select(a => new ContactServiceModel 
           { 
            Name = a.Name, 
            Telephone = a.Telephone  
           }).Where(e => e.IsDefault) 
           :null 
         }).ToList() 

如果需要使用開關,自己創建一個返回布爾值的方法,並把它改爲condition短語在上面的例子中。