如何通过linq或datatable.compute以任何方式从每个组中的数据表中选择不同的行 [英] How to select distinct rows from data table in every group by any way linq or datatable.compute
问题描述
问题
我需要从每个组的sum distinct行返回一个值。
会员表
会员代码种类价格
006625/1 1 108
006625/2 1 108
006625/3 1 108
006625 / 4 2 50
006625/5 2 50
我需要返还158作为总和
我需要这样做通过使用datatable.compute或linq
实际上我需要查询基于mskind的价格的返回总和而不是重复
意味着从中获取一个值每个组
int sumMember = DT.Compute();
或
int SumMember = LINQ
我不知道如何使用Compute或Linq获取 价格总和,所以我问?
对于006625以上的会员资格我有两种1和2
如何从每一行得到每一行的总和DT数据表中的
我已存储会员表
我在数据表中有3列
MemberCode,Kind,Price
如何根据种类仅返回不同行的总和?
查看示例:
var dt = new DataTable();
dt.Columns.Add(" MemberCode",typeof(string));
dt.Columns.Add(" Kind",typeof(int));
dt.Columns.Add(" Price",typeof(decimal));
dt.Rows.Add(" 006625/1",1,108);
dt.Rows.Add(" 006625/2" 1,110);
dt.Rows.Add(" 006625/3",1,108);
dt.Rows.Add(" 006625/4",2,50);
dt.Rows.Add(" 006625/5",2,50);
dt.Rows.Add(" 006627/1",1,333);
dt.Rows.Add(" 006627/2",1,333);
dt.Rows.Add(" 006627/3",2,444);
dt.Rows.Add(" 006629/1" 1,1000);
var query =
dt
.AsEnumerable()
.Select(r => new {c = Regex.Match(r.Field< string>( "MemberCode"),"^。+?(?= /)"。)。值,r})
.GroupBy(p => new {pc,k = prField< int>(" ; Kind")},(k,g)=> g.First())
.GroupBy(p => pc,(k,g)=> new {Code = k,Sum = g .Sum(z => zrField< decimal>(" Price"))});
var array = query.ToArray();
Problem
I need to return one value from sum distinct row from every group .
Member Table
MemberCode Kind Price 006625/1 1 108 006625/2 1 108 006625/3 1 108 006625/4 2 50 006625/5 2 50
I need to return 158 as sum
i need to do that by using datatable.compute or linq
Actually i need query return sum of price based on mskind and not repeated
meaning take one value from every group
int sumMember=DT.Compute(); or int SumMember=LINQ
i Dont know how to use Compute or Linq to get sum of Price so that I ask ?
for membership above 006625 i have two kind 1 and 2
how to get sum every single row from every group
in DT data table i store already Member Table
and i have 3 column inside datatable
MemberCode,Kind,Price
How to return only sum for distinct row based on kind?
Check an example:
var dt = new DataTable(); dt.Columns.Add( "MemberCode", typeof( string ) ); dt.Columns.Add( "Kind", typeof( int ) ); dt.Columns.Add( "Price", typeof( decimal ) ); dt.Rows.Add( "006625/1", 1, 108 ); dt.Rows.Add( "006625/2", 1, 108 ); dt.Rows.Add( "006625/3", 1, 108 ); dt.Rows.Add( "006625/4", 2, 50 ); dt.Rows.Add( "006625/5", 2, 50 ); dt.Rows.Add( "006627/1", 1, 333 ); dt.Rows.Add( "006627/2", 1, 333 ); dt.Rows.Add( "006627/3", 2, 444 ); dt.Rows.Add( "006629/1", 1, 1000 ); var query = dt .AsEnumerable() .Select( r => new { c = Regex.Match( r.Field<string>( "MemberCode" ), "^.+?(?=/)" ).Value, r } ) .GroupBy( p => new { p.c, k = p.r.Field<int>( "Kind" ) }, ( k, g ) => g.First() ) .GroupBy( p => p.c, ( k, g ) => new { Code = k, Sum = g.Sum( z => z.r.Field<decimal>( "Price" ) ) } ); var array = query.ToArray();
这篇关于如何通过linq或datatable.compute以任何方式从每个组中的数据表中选择不同的行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!