2011-02-01 87 views
0

我有默认值定义我StateRegions属性的默认值的属性之一返回一个列表,例如:使用LINQ to从比较两个列表,其中

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; } 
     } 

现在我想建立一个基于该区域的列表在DB中声明。这是基本的代码/伪代码:

 // 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();