2012-07-11 3 views
1

프리앰블 :간단한 SQL Server 테이블 LINQ 학습 쿼리

기존 프로그램에서 새 응용 프로그램을 만들어 C#/LINQ를 배우려고합니다. 본질적으로, 나는 새로운 데이터베이스와 약간 다른 기능을 가진 C#/LINQ 코드로 SQL 저장 프로 시저를 이식하고있다. 비록 내가가는 것에 대한 도움을 받았지만, 어떤 사람들이 사소한 문제를 제기 할 수있는 것을 먼저 만났습니다.

모든 정답이 그렇게 크게 기대됩니다. (예 : 단순히 Group Into 절이있는 쿼리입니까? stackoverflow에서 비슷한 질문을 놓치셨습니까? 여러 달 동안 stackoverflow를 검색하여 내 처분 도구를 많이 사용하고 있습니다. 101 LINQ Samples, C# In Depth, 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, 
) 

기본 키는 Id이고, LineManagerIdId의 외래 키입니다.

IdLineManagerId 일 경우 찾을 데이터베이스를 쿼리하기 위해 LINQ 코드를 쓰고 싶습니다. 그렇다면 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

+0

대답은 내가 두 가지 질문을한데하고 내 조인을 올바르게 이해하지 못했다고 생각합니다. 내 질문에 아래에 답변으로 표시했습니다. 나는 다음과 같이 몇 가지 테스트 값을 데이터베이스에 입력했다.INSERT INTO [사용자] ([ID] , [이름] [LineManagerId] , [이메일] [IsAdmin]) VALUES ('계정 \ 앨리스' , '앨리스' , '계정 \ Bob ' ,'alice @ alice.com ' , 1 ) –

+0

모든 응답자에게 감사드립니다. 나는 이미 여기에서 배울 것이 많다. 다시 한번 감사드립니다. –

답변

0

ID가 LineManagerId인지 찾기 위해 LINQ 코드를 작성하고 싶습니다. 그렇다면 LineMangerId에있는 모든 ID를 선택하십시오.

는 두 개의 별도의 쿼리의 문자 그대로,하지만 여기에 라인 관리자 아래에 당신에게 모든 사용자를 줄 것이다 하나 :

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 
}