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();