【问题标题】:How to get SQL query into LINQ form in C# code如何在 C# 代码中将 SQL 查询转换为 LINQ 形式
【发布时间】:2012-01-29 00:33:12
【问题描述】:

如何将以下 SQL 查询转换为 C#、.NET 3.5 代码中的 LINQ 查询形式: 1)

select COUNT(distinct Skill_Name) 
from Table1  
where Department = 'ABC' and  Skill_Name is not null 

2)

select distinct location, country from Customer where  Customer_Code ='1001';

【问题讨论】:

  • 查看我对第二个查询的编辑
  • @sukmar 尊重接受答案

标签: c# asp.net linq .net-3.5


【解决方案1】:

我怀疑你想要:

var query = from entry in dbContext.Table1
            where entry.Department == "ABC" && entry.SkillName != null
            select entry.SkillName;

var count = query.Distinct().Count();

或者使用扩展方法语法,一口气:

var count = dbContext.Table1
                     .Where(entry => entry.Department == "ABC" && 
                                     entry.SkillName != null)
                     .Select(entry => entry.SkillName)
                     .Distinct()
                     .Count();

如 mesiesta 所示,您可以将查询表达式与查询表达式中不支持的调用结合起来,但我倾向于将查询表达式分配给中间变量...我个人觉得它更清楚,但请使用您(和您的团队)喜欢的任何一个。

【讨论】:

  • 谢谢。我想将上述查询产生的这些独特的技能名称作为列添加到现有数据表中。怎么样??
  • @sukumar:如果您只想要不同的名称,请去掉最后的 Count() 调用。将结果提取到数据表后,您可以计算结果的数量。
  • 嗨,假设上面的查询结果计数为 2,接下来我想将这两个技能名称添加为现有数据表中的列。怎么样??
  • @sukumar:正如我所说,你不会在那里使用Count() 调用。我不知道转移到现有 DataTable,但您可以使用LINQ to DataSet 扩展方法从查询结果中创建一个 DataTable。见DataTableExtensions.CopyToDataTable
【解决方案2】:

类似的东西

 int count = (from p in Table1
              where p.Department == "ABC" && p.Skill_Name != null
              select p.Skill_Name).Distinct().Count(); 

对于第二个查询,您可以使用它

 var query= (from p in Customer
             where p.Customer_Code=="1001"
             select new { Location=p.location ,Country=p.country}).Distinct();

【讨论】:

  • 嗨,假设上述查询结果计数为 2,接下来我想将这两个技能名称添加为现有数据表中的列。怎么样??
  • 嗨,我不明白你的意思。能详细解释一下吗?
  • 好的,我得到你想要的。我没有听到任何关于它的消息,但我想,你不能通过 LINQ 将列添加到你的表中。您可以更新表格的行,但添加列似乎不是 LINQ 的工作。
【解决方案3】:

您可以使用 linqpad 转换为 linq 和 lambda 表达式

【讨论】:

  • 嗨,请帮助我如何获取此 SQL 语句的 linQ 查询:从客户那里选择不同的位置、国家/地区,其中 Customer_Code ='1001';
  • var query = (from q in customer where q.customer_code == "1001" select new { Location = q.location, Country = q.country }).Distinct();
猜你喜欢
  • 2018-04-06
  • 1970-01-01
  • 2017-11-25
  • 1970-01-01
  • 1970-01-01
  • 2013-05-25
  • 1970-01-01
  • 1970-01-01
  • 2020-07-19
相关资源
最近更新 更多