2016-01-03 115 views
0

我正在從分隔符表中提取數據庫中的數據並存儲在單獨的變量中。如何基於另一個列表字段篩選一個列表

這是第一個列表

var res = (from v in context.MasterValues 
         join c in context.MasterCategories on v.Category_Id equals c.Id 
         where c.Model_Key == (int)model && c.Name == tableName && v.Version_Id == version && v.Active == "Y" && c.Name.Equals("FXRates") 
         select new 
         { 
          Id = v.Id, 
          VersionId = v.Version_Id, 
          Text1 = v.Text1, 
         }).ToList(); 

這是第二個列表

 var fxview = context.MasterFXRates.Select 
      (x => new 
      { 
       Currency_code = x.Currency_code, 
       Rate = x.Rate, 
       Effective_dt = x.Effective_dt 
      } 
      ).ToList(); 

所以現在如何從我的第二個列表基於從我的第一個列表數據fxview過濾數據? 即 我需要其中list2中的CURRENCY_CODE的數據與List1中的文本1,其中effective_dt(datetime列)最大/最新日期

,例如,如果第二列表數據具有

  1. ABC,100匹配過濾數據, 2010-10-10
  2. ABC,120,2014-12-12
  3. DEF,700,2013年8月2日
  4. DEF,500,2015年6月6日

和列表(RES)具有以下數據

  1. 1,1,ABC
  2. 2,1,DEF

所以濾波後我的最終名單必須有以下輸出

  1. ABC,120(由於2014-12-12是最新日期,因此取出相應的值並重復值(ABC,100)應該被濾除。)

2.DEF,500(2015年6月6日以來是最新日期,相應的值被取出並重復值(DEF,& 00)應當被過濾掉。)

+0

如果只列出了需要執行過濾,我建議執行'JOIN'代替。 –

回答

0
var result = from masterFxRate in masterFxRates 
        join masterValue in masterValues on masterFxRate.Currency_code equals masterValue.Text1 
        group masterFxRate by 
        new 
        { 
         masterFxRate.Currency_code 
        } into groupedRates 
        select new 
        { 
         groupedRates.Key.Currency_code, 
         Rate = groupedRates.FirstOrDefault(g => g.Effective_dt != null 
                   && g.Effective_dt == groupedRates.Max(c => c.Effective_dt)).Rate 
        }; 

     foreach (var item in result) 
     { 
      Console.WriteLine("{0} : {1} ", item.Currency_code, item.Rate); 
     } 
0
fxView = fxView.OrderByDescending(x => x.effectiveDate).ToList(); 
    var result = new List(); 
res.ForEach((x) => result.Add(fxView.First(y => x.text1 == y.currency_code))); 

如果EFFECTIVEDATE是已經一個DateTime這應該工作,否則將其轉換爲DateTime

var fxview = context.MasterFXRates.Select 
     (x => new 
     { 
      Currency_code = x.Currency_code, 
      Rate = x.Rate, 
      Effective_dt = Convert.ToDateTime(x.Effective_dt) 
     } 
     ).ToList(); 
相關問題