2012-02-10 9 views
-1

다음 SQL 문을 linq로 변환하여 엔티티 vb.net으로 변환하려고합니다. 나는 아무 소용이 있어도 googled했다. sql이 중복 된 residentkey 레코드를 제거하여 최신 버전의 최상위 상주 키를 가져옵니다.linq to entity vb.net

 SELECT * FROM dbo.BI_Bond z 
    WHERE z.id IN (SELECT TOP 1 x.id FROM dbo.BI_Bond x 
WHERE x.residentkey = z.residentkey ORDER BY Version DESC) 

모든 도움을 주시면 감사하겠습니다.

답변

0

어쩌면 이렇게 될 수 있습니다.

var res = from b from BI_Bond 
      where BI_Bond.Select(i => i.residentkey).Contains(b.residentkey).OrderByDesc(i.Version) 
      select b; 

나는 이것을 컴파일하지는 않았지만, 나는 그것의 결론을 믿는다. 처음 인에

환호는 SO

+0

답장을 보내 주셔서 감사합니다.이 내용을 vb.net로 번역하려고했지만 비교를 알지 못했습니다. 나는 또 다른 대답을했다. – user631618

0

이 시도 답 :

Dim mv = From c In BI_Bond Group By c.residentKey Into version=Max(c.version) 
Dim u = From a In BI_Bond Join b In mv On a.residentKey Equals b.residentKey And a.version Equals b.version Select a 

이것은 버전 화 각 residentKey에 대한 행 최신 반환됩니다.

+0

고마워, 그 트릭을 한거야. 당신이 그것을 쓸 때 아주 간단 해 보입니다. 나는이 병합이 나에게 새로운 개념이기 때문에 나는 linq에 처음이다. 귀하의 경험에서 최고의 사이트가 엔티티에 linq을 배우러 가야 제안하는 것이 좋습니다. C# and vb.net – user631618

+0

죄송합니다, 자기 수강생은 여기 있습니다 : 나는 MS가 어디에서 왔는지 이해했습니다. 그건 그냥 시도해. –