简体   繁体   English

如何在执行时将groupby查询转换为linq并计算其他内容?

[英]How to convert groupby query to linq and compute other thing while executing?

I have this sql query and I want to convert it to linq. 我有此sql查询,我想将其转换为linq。

SELECT [Scheme_Code], [FundFamily], [Scheme_Name], MAX([Date]) as LastDate   
FROM [MFD].[dbo].[MFDatas]   
GROUP BY [Scheme_Code], [Scheme_Name], [FundFamily]  
ORDER BY [Scheme_Code]

I want to check last date and if it's latest then I have to mark it as 'live'? 我要检查最后一个日期,如果是最新日期,那么我必须将其标记为“实时”吗?

Since you want to copy results to DataTable , this query does what specified in your Sql query and copies results to DataTable . 由于要将结果复制到DataTable ,因此此查询执行Sql查询中指定的操作,然后将结果复制到DataTable

DataTable dt = new DataTable();

dt.Columns.Add("Scheme_Code", typeof(string));
dt.Columns.Add("Scheme_Name", typeof(string));
dt.Columns.Add("FundFamily", typeof(string));
dt.Columns.Add("LastDate", typeof(DateTime));

var table = MFDatas.GroupBy(g=> new { Scheme_Code, Scheme_Name, FundFamily})
                   .Select(s=> 
                   { 
                        var row = dt.NewRow();
                        row["Scheme_Code"] =  s.Key.Scheme_Code, 
                        row["Scheme_Name"] = s.Key.Scheme_Name, 
                        row["FundFamily"] = s.Key.FundFamily, 
                        row["LastDate"] = s.Max(m=>m.Date) 
                    })                  
                   .OrderBy(o=>o.Field<string>("Scheme_Code"))
                   .Distinct()
                   .CopyToDataTable();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM