我使用两个表
对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
答案 0 :(得分: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。
我没有检查过它的效果如何,我会在实际实施中将其留给您。