我从分离器表中获取数据库中的数据并存储在单独的变量中。
这是第一个清单
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 中过滤数据? 即 我需要过滤其中Currency_code的list2数据与List1的Text1匹配的数据,其中effective_dt(datetime列)是最大值/最新日期
例如,如果第二个列表数据有
List 1(res)有以下数据
因此,在过滤后,我的最终列表必须具有以下输出
2.DEF,500(自2015-06-06以来是最新日期,将提取相应的值并应过滤重复值(DEF,& 00)。)
答案 0 :(得分: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();
答案 1 :(得分: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);
}