在Linq-to-SQL中引用附加表's字段

本文关键字:字段 Linq-to-SQL 引用 | 更新日期: 2023-09-27 18:04:46

我正在创建一个windows窗体应用程序来显示我的数据库中的所有数据。

因此数据库有一个名为Items的表,一个名为Tags的子表,这两个表具有1:M关系。我可以在我的Project中添加一个Linq-to-SQL类,然后创建一个数据网格来访问主Items表,而不会出现任何问题。

查看由Linq-to-SQL创建的Items类的属性,我可以看到它有Tags表附加到它(EntitySet),但我无法访问任何Tags字段!有什么办法可以做到吗?

我想在数据网格中创建一个名为TagsList的新列,并且对于每个Item,我想显示所有相应的Tags.Name的串联列表。我想我可以做一些事情,比如向Items类添加一个新属性,如下所示:

public partial class Items
  {
    public string TagsList
      {
        return this.Tags.Name.Aggregate((x, y) => x + ", " + y));
      }
  }

但显然,这不起作用,因为它没有定义。帮助吗?

在Linq-to-SQL中引用附加表's字段

我假设Items.TagsICollection<Tags>类型(或IQueryableIEnumerable,我不记得哪个linq-to-sql使用),因为你说ItemsTags有一对多关系。如果不是这样,请告诉我,我会酌情删除或编辑我的答案。

Name是每个单独的Tags的属性,而不是集合,这就是为什么Tags.Name是不正确的。

尝试以下操作:

return this.Tags.Select(tag => tag.Name).Aggregate((x, y) => x + ", " + y));

Tags.Select(tag => tag.Name)将返回名称的IEnumerable<string>,然后您将其聚合