如何将 SQL 查询转换为 C# 代码中的 LINQ 表达式

3

我该如何将以下SQL查询转换为C#中的LINQ查询形式,.NET 3.5代码: 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';

请查看我的答案编辑以获取第二个查询。 - Chuck Norris
1
@sukmar 为了尊重,请接受答案。 - Hussein Zawawi
3个回答

3
我猜您想要:

我怀疑您需要:

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所示,您可以将查询表达式与不支持查询表达式的调用组合起来,但我倾向于将查询表达式分配给一个中间变量...个人认为这样更清晰,但请使用您(和您的团队)喜欢的方法。


谢谢。我想将上述查询结果中的这些唯一技能名称作为列添加到现有数据表中。怎么做? - venkat
1
@sukumar:如果你只想要不同的名称,请在结尾处去掉Count()调用。当你将结果取到数据表时,你可以计算结果的数量。 - Jon Skeet
嗨,假设上述查询结果计数为2,接下来我想将这两个skillNames作为列添加到现有的datatable中。怎么做? - venkat
1
@sukumar:就像我之前所说的,你不会在那里使用Count()调用。我不知道如何将数据传输到现有的 DataTable中,但是您可以使用LINQ to DataSet扩展方法从查询结果创建一个新的 DataTable。请参见DataTableExtensions.CopyToDataTable - Jon Skeet

3

类似于这样的

 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,接下来我想将这两个skillNames作为列添加到现有的datatable中。怎么做? - venkat
嗨,我不明白你的意思。你能详细解释一下吗? - Chuck Norris
1
好的,我明白你想要什么。虽然我没有听说过这个问题,但我猜测你无法通过LINQ向表中添加列。你可以更新表中的行,但是似乎不能通过LINQ添加列。 - Chuck Norris

2

您可以使用 LinqPad 将表达式转换为 Linq 和 Lambda 表达式。


你好,请帮我编写一个针对以下 SQL语句的 LinQ查询:select distinct location, country from Customer where Customer_Code ='1001'; - venkat
1
变量查询 = (从客户 q 中查询 where q.customer_code == "1001" select new { Location = q.location, Country = q.country }).Distinct(); - Hussein Zawawi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接