我有这个数据表:
RadkyData.Columns.Add("ČísloDokladuDodavatele", typeof(string));
RadkyData.Columns.Add("Množství", typeof(string));
RadkyData.Columns.Add("NákupníCena", typeof(string));
RadkyData.Columns.Add("PřepočtováJednotka", typeof(string));
RadkyData.Columns.Add("Přepočtovýkoeficient", typeof(string));
RadkyData.Columns.Add("DoporučenáCena", typeof(string));
RadkyData.Columns.Add("KódZboží", typeof(string));
RadkyData.Columns.Add("Ean", typeof(string));
RadkyData.Columns.Add("Název", typeof(string));
RadkyData.Columns.Add("DPH", typeof(string));
RadkyData.Columns.Add("OS1", typeof(string));
RadkyData.Columns.Add("OS2", typeof(string));
RadkyData.Columns.Add("OS3", typeof(string));
RadkyData.Columns.Add("OS4", typeof(string));
RadkyData.Columns.Add("OS5", typeof(string));
RadkyData.Columns.Add("US1", typeof(string));
RadkyData.Columns.Add("US2", typeof(string));
RadkyData.Columns.Add("US3", typeof(string));
RadkyData.Columns.Add("Oddělení", typeof(string));
RadkyData.Columns.Add("MěrnáJednotka", typeof(string));
RadkyData.Columns.Add("Barva", typeof(string));
RadkyData.Columns.Add("Velikost", typeof(string));
RadkyData.Columns.Add("Délka", typeof(string));
RadkyData.Columns.Add("Šířka", typeof(string));
RadkyData.Columns.Add("TypDokladu(PNS)", typeof(string));
RadkyData.Columns.Add("Datum OD", typeof(string));
RadkyData.Columns.Add("Datum DO", typeof(string));
RadkyData.Columns.Add("Značka", typeof(string));
RadkyData.Columns.Add("Sezona", typeof(string));
RadkyData.Columns.Add("Výrobní č.", typeof(string));
RadkyData.Columns.Add("Popis_Rozpis", typeof(string));
RadkyData.Columns.Add("Sufix EAN", typeof(string));
我需要SUM列“Množství”和列“NákupníCena”,其中列是:KódZboží,Ean,Velikost在行中是相同的。
这是我的代码:
var res = RadkyData.AsEnumerable()
.Select(r=>new
{
c1 = r.Field<string>("ČísloDokladuDodavatele"),
c2 = r.Field<string>("Množství"),
c3 = r.Field<string>("NákupníCena"),
c4 = r.Field<string>("PřepočtováJednotka"),
c5 = r.Field<string>("Přepočtovýkoeficient"),
c6 = r.Field<string>("DoporučenáCena"),
c7 = r.Field<string>("KódZboží"),
c8 = r.Field<string>("Ean"),
c9 = r.Field<string>("Název"),
c10 = r.Field<string>("DPH"),
c11 = r.Field<string>("OS1"),
c12 = r.Field<string>("OS2"),
c13 = r.Field<string>("OS3"),
c14 = r.Field<string>("OS4"),
c15 = r.Field<string>("OS5"),
c16 = r.Field<string>("US1"),
c17 = r.Field<string>("US2"),
c18 = r.Field<string>("US3"),
c19 = r.Field<string>("Oddělení"),
c20 = r.Field<string>("MěrnáJednotka"),
c21 = r.Field<string>("Barva"),
c22 = r.Field<string>("Velikost"),
c23 = r.Field<string>("Délka"),
c24 = r.Field<string>("Šířka"),
c25 = r.Field<string>("TypDokladu(PNS)"),
c26 = r.Field<string>("Datum OD"),
c27 = r.Field<string>("Datum DO"),
c28 = r.Field<string>("Značka"),
c29 = r.Field<string>("Sezona"),
c30 = r.Field<string>("Výrobní č."),
c31 = r.Field<string>("Popis_Rozpis"),
c32 = r.Field<string>("Sufix EAN")
})
.GroupBy(g => new { g.c1, g.c4, g.c5, g.c6, g.c7, g.c8, g.c9, g.c10, g.c11, g.c12, g.c13, g.c14, g.c15, g.c16, g.c17, g.c18, g.c19, g.c20, g.c21, g.c22, g.c23, g.c24, g.c25, g.c26, g.c27, g.c28, g.c29, g.c30, g.c31, g.c32 })
.Select(x => new {
col1 = x.Key.c1,
col2 = x.Sum(s => double.Parse(s.c2, System.Globalization.CultureInfo.InvariantCulture)),
col3 = x.Sum(s => double.Parse(s.c3, System.Globalization.CultureInfo.InvariantCulture)),
col4 = x.Key.c4,
col5 = x.Key.c5,
col6 = x.Key.c6,
col7 = x.Key.c7,
col8 = x.Key.c8,
col9 = x.Key.c9,
col10 = x.Key.c10,
col11 = x.Key.c11,
col12 = x.Key.c12,
col13 = x.Key.c13,
col14 = x.Key.c14,
col15 = x.Key.c15,
col16 = x.Key.c16,
col17 = x.Key.c17,
col18 = x.Key.c18,
col19 = x.Key.c19,
col20 = x.Key.c20,
col21 = x.Key.c21,
col22 = x.Key.c22,
col23 = x.Key.c23,
col24 = x.Key.c24,
col25 = x.Key.c25,
col26 = x.Key.c26,
col27 = x.Key.c27,
col28 = x.Key.c28,
col29 = x.Key.c29,
col30 = x.Key.c30,
col31 = x.Key.c31,
col32 = x.Key.c32
});
但是这段代码没有分组和汇总行......请问您有什么想法吗?
示例:我有2个相同的行,有不同的列“Množství”和Nákupnícena“。从这2行我想做一行,其中是SUM”Množství“和Nákupnícena”。
代码的简短变体:
var res = RadkyData.AsEnumerable()
.Select(r=>new
{
c1 = r.Field<string>("ČísloDokladuDodavatele"),
c2 = r.Field<string>("Množství"),
c3 = r.Field<string>("NákupníCena"),
})
.GroupBy(g => new { g.c1 })
.Select(x => new {
col1 = x.Key.c1,
col2 = x.Sum(s => double.Parse(s.c2, System.Globalization.CultureInfo.InvariantCulture)),
col3 = x.Sum(s => double.Parse(s.c3, System.Globalization.CultureInfo.InvariantCulture)),
});
答案 0 :(得分:0)
Hier是我用来获取SUM的Linq代码:
var result = ctx.Set<RadkyData>()
.GroupBy(x => new { x.c1, x.c2, x.c3, x.c4, x.c5, x.c6 })
.Select(x => new
{
col1 = x.Key.c1,
col_Mnozstvi = x.Sum(y => y.Množství),
col_NakupniCena = x.Sum(y => y.NákupníCena),
col2 = x.Key.c2,
col3 = x.Key.c3,
col4 = x.Key.c4,
col5 = x.Key.c5,
col6 = x.Key.c6
});
看,除了“Množství”和“Nákupnícena”之外的所有领域都有相同的价值。
您写道:
我需要SUM列“Množství”和列“NákupníCena”,其中列是:KódZboží,Ean,Velikost在行中是相同的。
但是您按所有字段进行分组,其值可能不同!您必须仅按预期值相同的行进行分组。在你的情况下只有“KódZboží”,“Ean”和“Velikost”。在这种情况下,您将获得正确的SUM。