2014-10-30 125 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