2015-09-26 129 views
0

我将1个列表中的2个列表与一些列组合在一起,我想按升序排列。我想订购的专栏是HODD。c#按升序排序组合列表

我试着阅读关于这个问题的其他答案,但我不知道如何将它们应用于我的代码。

这是我的代码:

var data1 = File.ReadAllLines("read" + campionatoselezTxt.Text + "stats.txt").ToList(); 
    var data2 = File.ReadAllLines("read" + campionatoselezTxt.Text + "bex.txt").ToList(); 

var dataList1 = new List<Data1>(); 
foreach (var data in data1) 
{ 
    var columns = data.Split(';'); 
    dataList1.Add(new Data1 
    { 
     Campionato = columns[0], 
     Data = columns[1], 
     Home = columns[2], 
     Away = columns[3], 

     HSFT = int.Parse(columns[4]), 
     ASFT = int.Parse(columns[5]), 
     HSHT = int.Parse(columns[6]), 
     ASHT = int.Parse(columns[7]), 
     HSSH = int.Parse(columns[8]), 
     ASSH = int.Parse(columns[9]) 
     //other int properties 
    }); 
} 

var dataList2 = new List<Data2>(); 
foreach (var data in data2) 
{ 
    var columns = data.Split(';'); 
    dataList2.Add(new Data2 
    { 
     Home = columns[0], 
     Away = columns[1], 
     HODD = columns[4], 
     XODD = columns[5], 
     AODD = columns[6], 
    }); 
} 

var combinedDataList = from d1 in dataList1 
//join d2 in dataList2 on d1.Home equals d2.Home 
    join d2 in dataList2 on new { d1.Home, d1.Away } equals new { d2.Home, d2.Away } 
    select new CombinedData 
    { 
     Campionato = d1.Campionato, 
     Data = d1.Data, 
     Home = d2.Home, 
     Away = d2.Away, 
     HSFT = d1.HSFT, 
     ASFT = d1.ASFT, 
     HSHT = d1.HSHT, 
     ASHT = d1.ASHT, 
     HSSH = d1.HSSH, 
     ASSH = d1.ASSH, 
     HODD = d2.HODD, 
     XODD = d2.XODD, 
     AODD = d2.AODD, 
     RisFin = d2.RisFin, 
     Over05SH = d2.Over05SH 
    }; 

回答

0
var combinedDataList = (from d1 in dataList1 
          //join d2 in dataList2 on d1.Home equals d2.Home 
          join d2 in dataList2 on new { d1.Home, d1.Away } equals new { d2.Home, d2.Away } 

          select new CombinedData 
          { 
           Campionato = d1.Campionato, 
           Data = d1.Data, 
           Home = d2.Home, 
           Away = d2.Away, 
           HSFT = d1.HSFT, 
           ASFT = d1.ASFT, 
           HSHT = d1.HSHT, 
           ASHT = d1.ASHT, 
           HSSH = d1.HSSH, 
           ASSH = d1.ASSH, 
           HODD = d2.HODD, 
           XODD = d2.XODD, 
           AODD = d2.AODD, 
           RisFin = d2.RisFin, 
           Over05SH = d2.Over05SH 

          }).OrderBy(p=>p.HODD); 

请尽量

+0

完美! :)我已经接受了你的答案,但我只有一个问题:我在datagridview中显示这个列表,有没有可能通过点击一个标题列来订购它?谢谢! :) –

+0

是的,我认为它的OnSorting事件下,你可以控制datagrids的行为,同样的概念与分页 –

+0

我看到:)谢谢! –