2011-02-01 2 views
0

Я определил мои StateRegions свойства со значениями по умолчанию, например:Использование LINQ для возврата списка из сравнения двух списков, один из свойств со значениями по умолчанию

public string Vermont 
     { 
      get 
      { 
       return string.IsNullOrEmpty(_region) ? "NorthEast" : _region; 
      } 

      set { _region = value; } 
     } 

     public string NewHampshire 
     { 
      get 
      { 
       return string.IsNullOrEmpty(_region) ? "NorthEast" : _region; 
      } 

      set { _region = value; } 
     } 

     public string Massachusetts 
     { 
      get 
      { 
       return string.IsNullOrEmpty(_region) ? "NorthEast" : _region; 
      } 

      set { _region = value; } 
     } 

     public string RhodeIsland 
     { 
      get 
      { 
       return string.IsNullOrEmpty(_region) ? "NorthEast" : _region; 
      } 

      set { _region = value; } 
     } 

     public string NewYork 
     { 
      get 
      { 
       return string.IsNullOrEmpty(_region) ? "NorthEast" : _region; 
      } 

      set { _region = value; } 
     } 

     public string Pennsylvania 
     { 
      get 
      { 
       return string.IsNullOrEmpty(_region) ? "NorthEast" : _region; 
      } 

      set { _region = value; } 
     } 

Теперь я хочу, чтобы создать список регионов, основанных на состояний в БД. Это базовый код/​​псевдокод:

 // 1) What states have customers? 
     List<string> states = GetStatesHavingCustomers(); 

     // 2) What are the regions that correspond to US States? 
     List<StateRegions> regions = new List<StateRegions>(); 


     // Lets get the get the states in the DB and 
     // put the corresponding regions in a list 

Любые идеи, как это сделать в LINQ?

ответ

0

Я не совсем понимаю свойства строки StateRegion или их цель. Если вы можете заменить их на словарь, вам не составит труда это реализовать.

// assuming this returns a List<string> containing state names such as "Vermont" 
var states = GetStatesHavingCustomers(); 

var stateRegions = new Dictionary<string, string>(); 
stateRegions["Vermont"] = "NorthEast"; 
stateRegions["Massacheusetts"] = "NorthEast"; 
//etc.. 

// Returns an IEnumerable<string>, with distinct entries 
var dbRegions = (from entry in stateRegions where states.Contains(entry.Key) select entry.Value).Distinct(); 
Смежные вопросы