我有一个行表和一个标签表。每行可以有来自标签表的多个标签。我试图建立一个包含所有标签的清单,并有一个复选框,显示该行是否有该标签,如果它已经检查过。
我已经将数据网格视图设置为2列。一个绑定到Name,另一个checkboxcell绑定到IsTagged
我试图使用投影:
-> line comes into constructor
var tagsList = from t in rs.Tags select new { Name = t.Name, IsTagged = line.Tags.Where(x => x.Name == t.Name).Any() };
dgvTags.DataSource = tagsList;
我的实体图如下:
更新:
我重新完成了整个事情,从2005年将后端数据库升级到2008r2,现在它似乎工作但是给出了以下错误...它没有崩溃,但在数据网格中没有显示任何项目。
答案 0 :(得分:0)
我认为问题是由于在linq-to-entities查询中使用了line参数的集合。
我会尝试重写查询,只使用这样的基本类型:
var tagNames = line.Tags.Select(x => x.Name).ToList();
var tagsList = from t in rs.Tags
join n in tagNames on t.Name equals n into tags
select new
{
Name = t.Name,
IsTagged = tags.Any()
};