C# 如何在C中将此SQL查询转换为LINQ或Lambda表达式?
我有以下简单的表格: 表:库存 +----+------+------+ |Id | ProductId |成本| +----+------+------+ | 1 | 1 | 10 | | 2 | 2 | 55 | | 3 | 1 | 42 | | 4 | 3 | 102 | | 5 | 2 | 110 | +----+------+------+ 我有以下SQL查询: 选择T.Id 从库存作为T内部联接 选择ProductId 从库存 按产品ID分组 在T.ProductId=S.ProductId上将计数*>1作为S 这可以为我提供所有存在重复ProductId的ID。使用上表,这个查询将返回id{1,2,3,5},这正是我想要的 我尝试将其转换为Lambda表达式,但它在连接时不断失败。有谁能让我开始写这个表达式,给我指出正确的方向吗 这就是我尝试过的: var q=inventory.Join inventory.GroupBy o=>o.ProductId。其中o=>o.Count>1,g=>g.ProductId,gb=>gb.Key,g,gb=>g.Id.ToList;C# 如何在C中将此SQL查询转换为LINQ或Lambda表达式?,c#,sql,linq,tsql,lambda,C#,Sql,Linq,Tsql,Lambda,我有以下简单的表格: 表:库存 +----+------+------+ |Id | ProductId |成本| +----+------+------+ | 1 | 1 | 10 | | 2 | 2 | 55 | | 3 | 1 | 42 | | 4 | 3 | 102 | | 5 | 2 | 110 | +
你需要使用这样的东西:
var result = Inventory
.GroupBy(x => x.ProductId)
.Where(x => x.Count() > 1)
.SelectMany(x => x.ToList())
.Select(x => x.Id);
你需要使用这样的东西:
var result = Inventory
.GroupBy(x => x.ProductId)
.Where(x => x.Count() > 1)
.SelectMany(x => x.ToList())
.Select(x => x.Id);
你能给我们看看你试过的lambda吗?LINQ不是SQL的替代品。它是一种在ORMs之上使用的查询语言。而ORM则不适合报告这样的查询。您到底在使用哪种ORM?在T-SQL中查找重复项要容易得多,使用按ProductID分区的计数或按ProductID分区的行数..不知道为什么需要GroupBy和Join。你可以用GroupBy,你说得对。加入是个问题。我错误地尝试将T-SQL改编成LINQ。你能给我们看看你尝试过的lambda吗?LINQ不是SQL的替代品。它是一种在ORMs之上使用的查询语言。而ORM则不适合报告这样的查询。您到底在使用哪种ORM?在T-SQL中查找重复项要容易得多,使用按ProductID分区的计数或按ProductID分区的行数..不知道为什么需要GroupBy和Join。你可以用GroupBy,你说得对。加入是个问题。我错误地尝试将T-SQL改编为LINQ。您不需要在SelectMany中列出这个ToList。谢谢@Mehrdad Dowlatabadi。你救了我一个头痛。@juharr是的,谢谢你的观点。np,很高兴我能帮上忙。你不需要在SelectMany中列出这个名字。谢谢@Mehrdad Dowlatabadi。你救了我一个头痛。@juharr是的,谢谢你的观点。我很高兴能帮上忙。