2012-07-11 27 views
1

前言:簡單的SQL Server表LINQ學習查詢

我想通過從現有的程序創建一個新的應用程序來學習C#/ LINQ。實質上,我將SQL存儲過程移植到C#/ LINQ代碼中,並使用新的數據庫和稍微不同的功能。儘管我已經有了幫助,但我已經遇到了我的第一個有些人可能會說的微不足道的問題。

雖然任何正確的答案將非常讚賞,所以方向。 (例如,它只是一個查詢,只是一個Group Into子句嗎?我錯過了一個類似的問題在stackoverflow?我有很多學習工具在我的處置感謝瀏覽stackoverflow幾個月,101 LINQ Samples,C#深入,C#4.0在果殼和LINQPad的信息是偉大的,它只是我有點被它淹沒

問:

我有以下表格:

CREATE TABLE [dbo].[User] 
([Id] [nvarchar](255) NOT NULL, 
[Name] [nvarchar](max) NOT NULL, 
[LineManagerId] [nvarchar](255) NULL, 
[Email] [nvarchar](max) NOT NULL, 
[IsAdmin] [bit] NULL, 
) 

主鍵是IdLineManagerIdId的外鍵。

我想要編寫LINQ代碼來查詢數據庫以查找Id是否是LineManagerId,如果是這樣,請選擇該LineMangerId具有的所有ID?

我有一個嘗試如下,但我錯過了一些我認爲是在我的理解LINQ非常基本的技能。

var ismanager = from manager in Users 
       join man in Users on manager.Id equals man.LineManagerId 
       select man.LineManagerId; 

感謝您的閱讀。

+0

給這一個鏡頭: VAR IsManager的=從用戶的用戶加入 上經理,manager.Id等於user.LineManagerId 選擇user.LineManagerId; – MikeTWebb 2012-07-11 14:37:35

+0

我認爲答案是我在一個問題中提出了兩個問題,並且沒有正確理解我的連接。我在下面回答了我的問題。我把一些測試值放入數據庫如下。INSERT INTO [用戶] ([ID] ,[名] ,[LineManagerId] ,[郵件] ,[IsAdmin]) VALUES (「帳戶\愛麗絲 , '愛麗絲' ,」帳戶\ Bob' ,'alice @ alice.com' ,1 ) – 2012-07-11 14:59:29

+0

我很想感謝所有響應者。我已經有很多東西可以從這裏學習了。再次感謝。 – 2012-07-11 15:08:35

回答

0

我想編寫LINQ代碼來查詢數據庫,以查找Id是否爲LineManagerId,如果是這樣,請選擇LineMangerId具有的所有Ids?

從字面上看這是兩個單獨的查詢,但在這裏是一個會給你所有用戶的線經理下:

string managerID = "1"; // The manager ID to query 
var userList = from manager in Users 
    join u in Users on manager.Id equals u.LineManagerId 
    where (manager.Id == managerID) 
    select u.Id ; 
1

我想願意寫LINQ代碼查詢在數據庫中查找Id是否是LineManagerId,如果是這樣,請選擇LineMangerId具有的所有Id?

我不太確定,你爲什麼需要這裏的任何連接。

IQueryable<User> query = Users.Where(x => x.LineManagerId == id); 
bool isManager = query.Any(); // first query to check if manager 
if(isManager){ 
    IEnumerable<User> users = query.Select(x => x.Id).ToArray(); // second query to fetch Ids 
}