所以我很困惑。我有两张表,一张是位置分配,其中包括:位置 ID、类型和类型 ID。我还有一个名为 services 的表,它由 name、id、description 和 icon 组成。
这个想法是说,让我返回所有 13 个服务,从中我们创建 13 个复选框。然后我们说,检查位置分配表,如果此服务(基于类型、id 和位置 id)与该列表中的服务匹配,请选中复选框,否则不选中。
我到目前为止是:
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 个未选中。
我必须在查询中更改哪些内容:获取所有服务并仅检查与此位置关联的服务?