所以我深感困惑。我有兩個表,一個是位置分配,它包括:位置標識,類型和類型標識。我也有一個名爲services的表,它由名稱,ID,描述和圖標組成。左外連接實體/ Linq
想法是說,讓我回來所有13個服務,從我們創建13個複選框。那麼我們說,檢查位置分配表,如果這個服務(基於類型,ID和位置ID)與該列表中的一個服務相匹配,選中該複選框,否則不要選中它。
我至今ahve是:
public static IEnumerable<Constants.Assignable> getAllService(int id)
{
List<Constants.Assignable> assign = new List<Constants.Assignable>();
using (var db = new Context())
{
var serv = from s in db.Services
join la in db.LocationAssignments on s.id equals la.typeId into LocationAssignments
from la in LocationAssignments
where la.locationId == id && s.id == la.typeId && la.type == Constants.SERV
select s;
foreach(var s in serv)
{
assign.Add(new Constants.Assignable(){
id = s.id, name = s.name
});
}
return assign;
}
}
返回我的,目前,兩個服務,當它應該返回我13.因此,有什麼問題我加入。
從那裏我們這樣做:
<h3 class="muted">Services Nearby</h3>
IEnumerable<UFA.Location.Core.Constants.Assignable> ServicesNearby = UFALocationApp.Helpers.LocationHelper.QueryHelper.getAllServicesNearby(Model.id);
foreach (var servicenb in ServicesNearby)
{
<div class="control-group">
<label class="control-label" for="serviceNearBy">
@servicenb.name
</label>
<div class="controls">
<input type="checkbox" id="Locationservice" value="@servicenb.id" name="serviceNB" checked="@(servicenb.assigned ? "checked" : "")" />
</div>
</div>
}
能打印出兩個複選框是,在這種情況下進行檢查。應該還有11個未被檢查的。
我在查詢中有什麼要改變的地方要說:請給我所有的服務,只檢查與這個位置相關的服務嗎?
http://stackoverflow.com/questions/3404975/left-outer-join-in-linq的副本 – gunr2171 2013-05-13 20:34:01