通过 LINQ 访问外键
本文关键字:访问 LINQ 通过 | 更新日期: 2023-09-27 17:55:49
我在SQL Server 2008上有一个设置。我有三张桌子。一个将字符串标识符作为主键。第二个表将索引保存到属性表中。第三个只是将外键保存到两个表中 - 因此属性本身不会保存在第一个表中,而是被引用。显然,这在数据库规范化中很常见,尽管它仍然很疯狂,因为我知道,由于键是一个字符串,因此每 30 个第一个表室条目最多需要 1 个属性才能产生空间优势,更不用说时间和复杂性问题了。
如何将 LINQ to SQL 查询编写为仅返回第一个表中的值,以便它们仅包含第二个表中列表中定义的特定属性?我试图使用Join
或GroupJoin
,但显然SQL Server 2008不能使用元组作为返回值。
"我尝试使用加入或 GroupJoin,但显然是SQL Server 2008 不能使用元组作为返回 值"。
您可以使用匿名类型而不是 Linq2SQL 支持的元组。
即:
from x in source group x by new {x.Field1, x.Field2}
我不太清楚你要什么。一些代码可能会有所帮助。你在寻找这样的东西吗?
var q = from i in ctx.Items
select new
{
i.ItemId,
i.ItemTitle,
Attributes = from map in i.AttributeMaps
select map.Attribute
};
当我知道我想使用的 sql 方法时,我一直使用此页面来找出复杂的 linq 查询。
VB http://msdn.microsoft.com/en-us/vbasic/bb688085
C# http://msdn.microsoft.com/en-us/vcsharp/aa336746.aspx
如果您知道如何编写 sql 查询来获取所需的数据,那么这将向您展示如何获得将其转换为 linq 语法的相同结果。