我有两张桌子 属性(AID,名称,描述) AttributeVal(AID,值)
现在,使用LINQ我需要通过连接这两个表来获取Name,Description和Value。所以,我到了这里..
var displayAttributeMap = dctx.Attributes.Join(dctx.AttributeDisplayNames, a => a.AttributeID, adn => adn.AttributeID,
(a, adn) => new
{
AttributeName = a.Name,
AttributeDispName = adn.DisplayName
}
).ToDictionary(a => a.AttributeName, a => a.AttributeDispName);
但是在这里我不知道在外键上插入条件的位置,在我的例子中它是属性ID。我在这里遗漏了什么或者我应该直接使用LINQ吗?
答案 0 :(得分:0)
从我收集的内容中,您需要将值和显示在字典中的属性的显示名称。
您需要做的就是在当前查询中添加另一个联接,并稍微更改您的select和ToDictionary。我发现在处理连接时使用查询语法更容易阅读和使用。
(from attr in dctx.Attributes
join attrDisplayName in dctx.AttributeDisplayNames on attr.AttributeID equals attrDisplayName.AttributeID
join attrVal in dctx.AttributeVal on attr.AttributeID equals attrVal.AttributeID
select new
{
AttributeName = attr.Name,
AttributeDispName = attrDisplayName.DisplayName,
AttributeID = attr.AttributeID,
AttributeValue = attrVal.Value
}).ToDictionary(key => key.AttributeID, (value) => { return new { DisplayName = value.AttributeDispName, Value = value.AttributeValue };})
我还没有对它进行测试,但LinqPad对语法很满意,所以我认为它应该可行。