2014-10-30 150 views
0

我正在使用的应用程序,我不得不使用select statementSQL queryLINQ现有查询中使用select语句

我有以下SQL查询必须被转换为LINQ在我的控制器中使用我的ASP.Net MVC应用程序

SQL查询

Select * 
From CCUserDataList 
Where CCId IN (
    Select CompanyId 
    From Users 
    Where UserName="test") 
Order by ProductOrder, GradeOrder,TermOrder 

上述查询给我我需要的结果,但我使用它有问题在我的应用程序在那里我使用LINQ如下

public override IQueryable<CCUserData> Get() 
{ 
    return db.CCUserDataList 
     .OrderBy(c => c.ProductOrder) 
     .ThenBy(c => c.GradeOrder) 
     .ThenBy(c => c.TermOrder); 
} 

和上面LINQ当然是不完整的,如果它应该返回相同的结果。我的SQL查询。

我可以知道完整的LINQ吗?

回答

2

不知道你的类/数据库结构,我会说你可以这样做:

var companyIds = db.Users.Where(u => u.UserName == "test").Select(u => u.CompanyId); 
return db.CCUserDataList.Where(ccu => companyIds.Contains(ccu.CCId)).OrderBy.... 

连接查询可能会也行,顺便

或也

return db.CCUserDataList 
     .Where(ccu => db.Users 
         .Any(u => u.UserName == "test" && ccu.CCId == u.CompanyId)); 
+0

你意思是'var companyIds = db.Users.Where(u => u.UserName ==“test”)。Select(u => u.CompanyId).ToList();'? – 2014-10-30 16:40:34

+1

@asdf_enel_hak no。我尽量留在IQueryable世界。 – 2014-10-30 16:40:54

+0

这就是我也会这么做的。我希望有更好的方法,但如果有的话,我还没有找到它。 – 2014-10-30 16:48:22