2014-03-24 57 views
0

,我給「洛卡順序錯誤」不能使用的EntitySet我的LINQ裏面sql查詢

這是代碼:

private Lst_active as new entityset(of Activity) 
private crw_list as new entityset(of Crew) 

checklistbox.Items.addrange(Dbase.Crew) 

然後我從清單箱中的所有船員中選擇,並將選定的船員插入船員的實體組中供進一步使用。

crw_list.addrange(Checkedlistbox.checkeditems) 

Lst_active.AddRange(From x In DBase.Stored_Activities Join z In crw_list On x.EMP_NO Equals z.EMP_NO 
        Select x) 

有什麼辦法嗎?或即時做錯了?

回答

0

我找到解決辦法,只是改變了地方的查詢兩個部分組成。

 From z In crw_list Join x In DBase.Stored_Activities On x.EMP_NO Equals z.EMP_NO 
       Select x 

它將包含sql連接查詢的從linq到sql的查詢更改爲linq到對象。

+0

這一個把整個表拿到內存中,並執行連接作爲內存查詢,這比數據庫效率低得多。 – MarcinJuraszek

0

你還沒說你的模型的樣子,但下面的概念應該工作:

Dim active = (From x In DBase.Stored_Activities 
       Join z In DBase.Stored_Crews On x.EMP_NO Equals z.EMP_NO 
       Select x).ToList() 

更新

如果你有一個本地內存中的集合,你需要用的物品字段集合中匹配一個,使用Contains代替:

From x in DBase.StoredActivities 
Where localList.Contains(x.EMP_NO) 
select x 

你的列表中應包含加入列*只,在這種情況下,應該從crw_list.Select(Function(x) x.EMP_NO)製成。

+0

是的,但我需要使用本地序列。我要編輯這個問題。 – Farhad

+0

你想加入本地序列嗎?我不認爲它會起作用。 – MarcinJuraszek

+0

我不知道是否有任何其他方式使用本地列表,而不是使用entityset在查詢中使用。 – Farhad

相關問題