2010-05-26 1115 views
1

我已經創建了此查詢來從數據庫中獲取一些結果。 Here is my table structure在C#中使用查詢語法時「枚舉未產生結果」。如何檢索輸出

發生了什麼樣的事情。

DtMapGuestDepartment如表1

DtDepartment如表2

是否正在使用

var dept_list= from map in DtMapGuestDepartment.AsEnumerable() 
        where map.Field<Nullable<long>>("GUEST_ID") == DRowGuestPI.Field<Nullable<long>>("PK_GUEST_ID") 
        join 
        dept in DtDepartment.AsEnumerable() 
        on map.Field<Nullable<long>>("DEPARTMENT_ID") equals dept.Field<Nullable<long>>("DEPARTMENT_ID") 
        select dept.Field<string>("DEPARTMENT_ID"); 

我表演上 數據表此查詢,並希望它返回我 一個數據BLE。

在這裏,我要選擇從表1中不同的部門,以及這將是我的下一個任務。如果可能,請回答。

+0

如果將其重寫爲SQL並直接對數據庫執行,會發生什麼?它會返回結果嗎? – 2010-05-26 05:50:07

+0

@塞巴斯蒂安:是的,它正在返回我期望的結果集。 – 2010-05-26 05:50:52

+2

然後恐怕你需要對數據庫進行查詢。什麼是生成併發送到數據庫的聲明?它與您的原始SQL查詢有何不同?如果你看到Linq2SQL的錯誤,這可以幫助你在查詢中找到錯誤。 – 2010-05-26 05:54:22

回答

2

將查詢分解爲幾部分並查看哪些集合沒有元素。

var mapList = DtMapGuestDepartment.AsEnumerable().ToList(); 
var deptList = DtDepartment.AsEnumerable().ToList(); 

var queryResult1 = (
    from map in mapList 
    where map.Field<Nullable<long>>("GUEST_ID") == 
    DRowGuestPI.Field<Nullable<long>>("PK_GUEST_ID") 
    select map 
).ToList(); 

var queryResult2 = (
    from map in queryResult1 
    join dept in deptList 
    on map.Field<Nullable<long>>("DEPARTMENT_ID") 
    equals dept.Field<Nullable<long>>("DEPARTMENT_ID") 
    select dept.Field<string>("DEPARTMENT_ID") 
).ToList(); 
+0

Thx的支持,雖然我解決了問題,就像你說的一樣,但在你回答之前的一兩個小時。 – 2010-05-27 06:05:54