[英]How to group by a pivot table with LINQ
我是LINQ的新手,但是從我讀過的內容中查找我正在尋找的東西就像GroupBy - Simple 3 。 問題是我不想按一個小對象進行分組,我想分組並通過這些組分隔一個數據透視表(或直接創建它的查詢),如下所示:
查詢:(我正在使用Visual Studio 2012,查詢MS Access2010數據庫)
try
{
l.Open();
OleDbCommand cmd = l.CreateCommand();
string transform = "TRANSFORM Max(Ultima_Calibracao) AS MaxUltimaCalib ";
string select = "SELECT Codigo, B_DSC AS Artigo, Marca_ AS Marca, Modelo, N_Serie ";
string from = "FROM APP_Equip_Ult_Prox_Calibracao ";
string where = "WHERE YEAR(Ultima_Calibracao) = " + ano +
" AND [Descrição Serviço] like '" + servico + "' ";
string groupby = "GROUP BY APP_Equip_Ult_Prox_Calibracao.Codigo, APP_Equip_Ult_Prox_Calibracao.B_DSC, " +
"APP_Equip_Ult_Prox_Calibracao.Marca_, APP_Equip_Ult_Prox_Calibracao.Modelo, APP_Equip_Ult_Prox_Calibracao.N_Serie," +
"Year(DateAdd('m',Val([frequência calibração]),[Ultima_Calibracao])) ";
string pivot = "PIVOT Format(Ultima_Calibracao,'yyyy-mm') IN ( '" + ano + "-01','" + ano + "-02','" + ano + "-03','" + ano + "-04','" + ano + "-05','" +
ano + "-06','" + ano + "-07','" + ano + "-08','" + ano + "-09','" + ano + "-10','" + ano + "-11','" + ano + "-12');";
string query = transform + select + from + where + groupby + pivot;
cmd = new OleDbCommand(query, l);
dt = new DataTable();
dt.Load(cmd.ExecuteReader());
l.Close();
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine("DAO Exception: " + ex.Message);
return null;
}
試圖更好地解釋自己,我想轉向這樣的事情:
按部門分組的查詢結果:
進入這樣的事情:
部門1
部門2
我不是100%肯定我會跟隨,但這是我嘗試回答的問題。 在這里,我在DataTable中構建一些輸入數據(這模仿了從查詢中獲得的內容),並使用一些LINQ將數據轉換為新的DataSet。 這回答了你的問題了嗎?
// create input data
var inputData = new DataTable();
inputData.Columns.Add("ID", typeof (int));
inputData.Columns.Add("Description", typeof (string));
inputData.Columns.Add("Model", typeof (string));
inputData.Columns.Add("Department", typeof (string));
inputData.Rows.Add(1, "Item1", "Model1", "Department1");
inputData.Rows.Add(2, "Item2", "Model1", "Department2");
inputData.Rows.Add(3, "Item3", "Model1", "Department1");
inputData.Rows.Add(4, "Item4", "Model1", "Department2");
inputData.AcceptChanges();
// create output data
var outputData = new DataSet();
outputData.Tables.AddRange(
inputData.AsEnumerable()
.GroupBy(row => row.Field<string>("Department"))
.Select(rowGroup => {
var departmentTable = inputData.Clone();
departmentTable.TableName = rowGroup.Key;
foreach (var row in rowGroup)
departmentTable.Rows.Add(row.ItemArray);
return departmentTable;
})
.ToArray());
outputData.AcceptChanges();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.