2013-02-13 87 views
0

我有如下的查詢: `表MVC複雜的數據查詢

  1. 倫敦的公寓
  2. 倫敦的公寓
  3. 倫敦之家
  4. 巴黎的公寓
  5. 巴黎的公寓
  6. 巴黎之家
  7. Paris House'

我期待在linq中把它變成下面的對象。任何人都請幫助我。

public class BrowseModel 
{ 
    public string TownName { get; set; } 

    public int FlatCount { get; set; } 

    public int HouseCount { get; set; } 

} 

結果需要像:

  1. 倫敦2Flat 1個
  2. 巴黎2Flat 2房
+0

是您轉換爲BrowseModel的字符串列表類型 – ethicallogics 2013-02-13 02:21:28

+0

它是一個對象。想象一下房子的對象。平和房子是房子類型。 – Tun 2013-02-13 10:08:24

回答

0

嗨,如果我沒有理解你的問題錯了,你可以試試它是這樣的

public partial class MainWindow : Window 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 
     DataContext = this; 
     //Ignore above code 
     List<Table> list = new List<Table>(); 
     //Suppose this what you db returns 
     list.Add(new Table() { TownName = "London", HouseType = HouseType.Flat }); 
     list.Add(new Table() { TownName = "London", HouseType = HouseType.Flat }); 
     list.Add(new Table() { TownName = "London", HouseType = HouseType.House }); 
     list.Add(new Table() { TownName = "Paris", HouseType = HouseType.Flat }); 
     list.Add(new Table() { TownName = "Paris", HouseType = HouseType.Flat }); 
     list.Add(new Table() { TownName = "Paris", HouseType = HouseType.House }); 
     list.Add(new Table() { TownName = "Paris", HouseType = HouseType.House }); 

     var result = list.GroupBy(o => o.TownName).Select(s => new BrowseModel() { TownName = s.First().TownName, FlatCount = s.Where(f => f.HouseType == HouseType.Flat).Count(), HouseCount = s.Where(h => h.HouseType == HouseType.House).Count() }).ToList(); 
    } 
} 

public class BrowseModel 
{ 
    public string TownName { get; set; } 

    public int FlatCount { get; set; } 

    public int HouseCount { get; set; } 

} 

public class Table 
{ 
    public string TownName { get; set; } 
    public HouseType HouseType { get; set; } 
} 

public enum HouseType 
{ 
    House=0, 
    Flat=1 
} 

我希望這會給你想法。

+0

謝謝你。這非常有幫助。 – Tun 2013-02-13 14:08:29