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