2011-06-01 108 views
2

看起來連接不能使用查詢中定義的集合,或者我做錯了什麼?LINQ連接範圍

from a in new[] { 
    new { Id = 1 }, 
    new { Id = 2 } } 

let bees = new[] { 
    new { Id = 2 }, 
    new { Id = 3 } } 

join b in bees on a.Id equals b.Id 

select 1; 

這一個給編譯時錯誤「元素」蜜蜂「在當前上下文中不存在」。查詢有什麼問題?

回答

2

這是不合法的,你分割它 - 你不能在連接的中間聲明一個範圍變量 - 在內部let子句被轉換爲匿名類型的Select()語句 - 但是你不能使用Select()在加入過程中,您必須在加入後移動它。

+0

現在我明白了,謝謝。其他誰想知道更多關於,這裏是描述它的鏈接:http://blogs.msdn.com/b/stuartleeks/archive/2008/05/21/using-let-in-linq-to-objects.aspx – 2011-06-01 14:23:50

0

看一看這個問題 - 我覺得它涵蓋的東西:

Can i use join with let in linq - c#

基本上你只能使用let進行查詢,而不是連接。

以下似乎工作,但它不是很好:

from a in new[] { 
    new { Id = 1 }, 
    new { Id = 2 } } 

join b in new[] { 
    new { Id = 2 }, 
    new { Id = 3 } } on a.Id equals b.Id 

select 1; 
+0

你提出的問題涵蓋了不同的問題。我沒有定義let直到運行時的數組。但是,無論如何感謝:) – 2011-06-01 14:05:52