Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 具有相同名称但其他具有一个Linq的列_C#_Sql_Linq_Duplicates - Fatal编程技术网

C# 具有相同名称但其他具有一个Linq的列

C# 具有相同名称但其他具有一个Linq的列,c#,sql,linq,duplicates,C#,Sql,Linq,Duplicates,我在数据库中有数据,比如 1 CP 12 2 OB 8 1 CP 19 3 AB 22 2 OB 33 1 CP 19 3 AB 22 运行查询后我想要什么 2 OB 41 1 CP 60 3 AB 44 我试过的 var abc = db.OilVolumes.GroupBy(x => new { x.OilType.Oil

我在数据库中有数据,比如

1     CP     12
2     OB     8
1     CP     19
3     AB     22
2     OB     33
1     CP     19
3     AB     22
运行查询后我想要什么

2     OB     41
1     CP     60
3     AB     44
我试过的

 var abc = db.OilVolumes.GroupBy(x => new { x.OilType.OilTypeName, x.Weight }).Select(y => new 
{
oilType = y.Key.OilTypeName,
weight = y.Sum(z => z.Weight)
});
但是我失败了。。。给我一个类似的格式


谢谢

这个号码和名字似乎多余,所以我跳过了这个号码。我假设你有这样一门课:

public class OilVolume
{
    public int Volume { get; set; }
    public string Name { get; set; }
    public OilVolume(string name, int value)
    {
        this.Name = name;
        this.Volume = value;
    }

    public override string ToString(){
        return $"{Name} {Volume}";
    }
}
然后,对所需输出的查询将是:

var oilSums = db.OilVolumes
  .GroupBy(oil => oil.Name)
  .Select(group => new OilVolume(group.Key,  group.Sum(oil => oil.Volume)))
  .OrderByDescending(oil => oil.Volume);
以及

foreach (var oil in oilSums)
 Console.WriteLine(oil);


我假设您示例中的
CP 60
是一个错误?

从您的
GroupBy
中删除
x.Weight

var abc = db.OilVolumes.GroupBy(x => new { x.OilType.OilTypeName }).Select(y => new 
    {
     oilType = y.Key.OilTypeName,
     weight = y.Sum(z => z.Weight)
    });

解释数据转换的逻辑。输入错误<代码>2 OB 41,不是63我想从表中提取油量。第2列是油型,我不想重复油型。此外,我想分别计算每种类型的所有行的所有体积。第三行是重量。。我希望每种类型的总重量不要重复。只有一排有一种油类型和所有的重量嘿,谢谢这里。。。实际上我在数据库里有数据。在这里,我有成行的数据。就像在TYPE1中,oil有10行,TYPE2有5行,等等。希望通过链接获得数据,这样我就可以得到TYPE1 40 TYPE2 50的输出。好的,你应该能够将我的示例转移到一个
DataRow
你最初的帖子不是很具体。尽管如此,我还是建议您将数据库数据映射到某种类型的对象,然后使用我在这里给出的方法。
var abc = db.OilVolumes.GroupBy(x => new { x.OilType.OilTypeName }).Select(y => new 
    {
     oilType = y.Key.OilTypeName,
     weight = y.Sum(z => z.Weight)
    });