我正在创建一个Windows窗体应用程序来显示我的数据库中的所有数据。
因此,数据库有一个名为 Items 的表,一个名为 Tags 的子表,这两个表具有1:M的关系。我可以在我的Project中添加一个Linq-to-SQL类,然后创建一个datagrid来访问主Items表而没有任何问题。
查看由Linq-to-SQL创建的 Items类的属性,我可以看到它附加了 Tags 表(EntitySet),但是我无法访问任何标签字段!有没有办法做到这一点?
我想在datagrid中创建一个名为TagsList的新列,对于每个Item,我想显示所有相应 Tags.Name 的连接列表。我想我可以做一些事情,比如在Items类中添加一个新属性:
public partial class Items
{
public string TagsList
{
return this.Tags.Name.Aggregate((x, y) => x + ", " + y));
}
}
但显然,这不起作用,因为没有定义。帮助
答案 0 :(得分:1)
我假设Items.Tags
类型为ICollection<Tags>
(或IQueryable
或IEnumerable
,我记不清哪个linq-to-sql使用了) Items
和Tags
具有一对多的关系。如果不是这种情况,请告诉我,我会删除或编辑我的答案。
Name
是每个人Tags
的属性,而不是Tags.Name
不正确的集合。
尝试以下方法:
return this.Tags.Select(tag => tag.Name).Aggregate((x, y) => x + ", " + y));
Tags.Select(tag => tag.Name)
将返回IEnumerable<string>
个名称,然后汇总。