LINQ查询或查询C#中的表,并进行分组和合计
可能重复:LINQ查询或查询C#中的表,并进行分组和合计,c#,linq,C#,Linq,可能重复: 需要LINQ查询或查询C#中的表 我有一个动态创建的数据表: COLUMN: City Deposittype DepositAmount ROWS : city1 new 100 city1 new 200 city2 old 2
需要LINQ查询或查询C#中的表 我有一个动态创建的数据表:
COLUMN: City Deposittype DepositAmount
ROWS : city1 new 100
city1 new 200
city2 old 200
city2 old 100
city2 new 200
city3 new 100
要按城市分组,请计算指定存款类型的存款金额总和
例如,对于条件depositType=new
我要像这样吵架
city1 city2 city3
300 200 100
我要按城市和特定存款类型分组的存款金额总和。i、 e结果行的列名应为city1 city2 city3,指定贷款类型的“存款金额”之和应为Deposittype=new。公共类表
public class Table
{
public string City { get; set; }
public string Deposit { get; set; }
public decimal Amount { get; set; }
}
var list = new List<Table>
{
new Table { City = "city1", Deposit = "new", Amount = 100 },
new Table { City = "city1", Deposit = "new", Amount = 200 },
new Table { City = "city2", Deposit = "old", Amount = 200 },
new Table { City = "city2", Deposit = "old", Amount = 100 },
new Table { City = "city2", Deposit = "new", Amount = 200 },
new Table { City = "city3", Deposit = "new", Amount = 100 }
};
//You can get all items by grouping with city and deposit in here.
var result = (from c in list
group c by new {c.City,c.Deposit} into d
select new
{
City = d.Key.City,
Deposit = d.Key.Deposit,
SumAmount = d.Sum(x => x.Amount)
});
//If you want only new,
var resultNew = result.Where(x => x.Deposit == "new");
//If you want only old,
var resultOld = result.Where(x => x.Deposit == "old");
{
公共字符串City{get;set;}
公共字符串存放{get;set;}
公共十进制数{get;set;}
}
变量列表=新列表
{
新表{City=“city1”,存款=“new”,金额=100},
新表{City=“city1”,存款=“new”,金额=200},
新表{City=“city2”,存款=“old”,金额=200},
新表{City=“city2”,存款=“old”,金额=100},
新表{City=“city2”,存款=“new”,金额=200},
新表{City=“city3”,存款=“new”,金额=100}
};
//您可以将所有项目与城市分组并存放在此处。
var result=(来自列表中的c)
c组由新{c.City,c.Deposit}转入d组
选择新的
{
城市=d.Key.City,
存款=d.Key.存款,
SumAmount=d.Sum(x=>x.Amount)
});
//如果你只想要新的,
var resultNew=result.Where(x=>x.Deposit==“new”);
//如果你只想变老,
var resultheld=result.Where(x=>x.Deposit==“old”);
如果有一个答案对你有帮助,请考虑把它标记为答案。顺便说一下,你的其他问题也是如此。where子句不能用于table@ThejoArjun这取决于表的类型。我假设它是List
var result = table.Where(x=>x.Deposit=="new")
.GroupBy(x=> x.City)
.Select(x=>new { City=x.Key,Sum=x.Sum(y=>y.Amount) } )
.ToList();