我在SQL Server 2008上有一个设置。我有三个表。一个字符串标识符作为主键。第二个表将索引保存到属性表中。第三个只是将外键保存到两个表中 - 这样属性本身不会保存在第一个表中,而是被引用。显然这在数据库规范化中很常见,虽然它仍然是疯狂的,因为我知道,因为密钥是一个字符串,每30个第一个表空间条目最多需要1个属性才能产生空间利益,更不用说时间和复杂性问题。
如何编写LINQ to SQL查询以仅返回第一个表中的值,这样它们只包含特定属性,如第二个表中的列表中所定义的那样?我尝试使用Join
或GroupJoin
,但显然SQL Server 2008不能使用元组作为返回值。
答案 0 :(得分:2)
我不太清楚你要求的是什么。一些代码可能有帮助。你在寻找这样的东西吗?
var q = from i in ctx.Items
select new
{
i.ItemId,
i.ItemTitle,
Attributes = from map in i.AttributeMaps
select map.Attribute
};
答案 1 :(得分:2)
“我试图使用加入或 GroupJoin,但显然是SQL Server 2008年不能使用元组作为回报 值”。
您可以使用匿名类型而不是Linq2SQL支持的元组。
IE:
from x in source group x by new {x.Field1, x.Field2}
答案 2 :(得分:0)
当我知道我想要使用的sql方法时,我一直使用这个页面来计算复杂的linq查询。
VB http://msdn.microsoft.com/en-us/vbasic/bb688085
C#http://msdn.microsoft.com/en-us/vcsharp/aa336746.aspx
如果你知道如何编写sql查询来获取你想要的数据,那么这将告诉你如何获得相同的结果将其翻译成linq语法。