-1

使用这两个表时,我对 EF 和 linq2sql 有以下问题

表格1:

Id | Name
1  | Name1
2  | Name2

表 2:

Id | Table1Id | Name
1  | 1        | SomeText1
2  | 1        | SomeText2
3  | 2        | SomeText3

我想创建一个 linq2sql 查询以获取带有模板的结果集

Table1Id:contact(Table2.Name+";")

例如

1:SomeText1;SomeText2
2:SomeText3
4

1 回答 1

0

今天早上有几分钟的空闲时间,所以请在下面找到一个示例实现。除了您为实现所需而指定的表之外,您还需要在两个表之间添加关联(多对多)。这将在连接表上运行,并向您的两个实体添加导航属性。

下面的查询本质上是说选择表 1 条目并包括来自 Table2 导航属性的关联记录。例如,我在上下文中关闭了延迟加载(您几乎应该一直这样做,因为它会导致跨层和/或在您的应用程序中序列化时出现问题)。

        // db first
        using (var db = new SO15312066Entities())
        {
            // iterate over table 1, with join values from 2
            var query = db.Table1.Include("Table2");

            foreach (var item in query)
            {
                Console.WriteLine("{0}:{1}", item.Id, string.Join(";", item.Table2.Select(x => x.Name).ToList()));
            }
        }

        //output
        //1:SomeText1;SomeText2
        //2:SomeText3

此实现的假设是它首先是 EF 数据库(正如您最初所说的那样,您在 EF 中遇到了问题)。SO15312066Entities 是查询的 ObjectContext。

我还没有检查过它的性能如何,我将在你的实际实现中留给你。

于 2013-03-12T08:59:09.480 回答