如何在Linq中表示SQL查询

本文关键字:表示 SQL 查询 Linq | 更新日期: 2023-09-27 17:59:39

我在SQL中有一个简单的查询,但在linq中发现转换困难。我是林克的新手。

我的SQL select语句如下

select CM.CategoryName 
from dbo.utblCategoryMaster as CM 
where CM.ParentCategoryID in 
   (select CategoryID from dbo.utblCategoryMaster where CategoryName='Events')

我知道这很简单。我试过这个

var result = from objutblCategoryMaster in db.utblCategoryMasters
  select new
  {
      CategoryID = objutblCategoryMaster.CategoryID,
      CategoryName = db.utblCategoryMasters.Where(x => x.ParentCategoryID == objutblCategoryMaster.CategoryID && x.CategoryName=="Events")
  };
return result.CopyToDataTableExt();

如何在Linq中表示SQL查询

您可以通过联接获得结果。

var result = db.utblCategoryMasters
               .Join(db.utblCategoryMasters.Where(c => c.CategoryName=="Events"),
                   cm => cm.ParentCategoryId,
                   c => c.CategoryId,
                   (cm, c) => new { cm.CategoryId, cm.CategoryName });

如果您使用的是实体框架,并且导航属性设置正确,您可以将其简化为以下内容。。。

var result = db.utblCategoryMasters
                 .Where(cm => cm.ParentCategory.CategoryName == "Events")
                 .Select(cm => new { cm.CategoryId, cm.CategoryName });