所以我深感困惑。我有两个表,一个是位置分配,它包括:位置标识,类型和类型标识。我也有一个名为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