我有两张表如下:
OriginalText(ID, LanguageId, Key, TextValue);
CustomText(ID, ClientID, FkOriginalTextId, TextValue);
这两个表通过外键关联:FkOriginalTextId
基本上,OriginalText将具有不同语言的键/值对。如果特定客户端想要定制某个值,那么它将转到CustomText表。一个例子是OriginalText:Employee,CustomText:密钥的员工成员:员工。
我想写一个Lambda / Linq来从OriginalText表中获取给定语言的所有文本,但是如果CustomText表中有该键的自定义替换,则应该覆盖TextValue。我可以使用多个SQL语句通过将OriginalText值获取到临时表以及稍后使用CustomText值更新它们来执行此操作,但是有更好的方法吗?也许使用CTE?
P.S。我想使用LINQ或Lambda表达式
来做到这一点答案 0 :(得分:1)
由于两个表具有关系,因此您可以轻松检查每个OriginalText
项是否具有CustomText
。如果存在,则从CustomText
获取值:
OriginalText.Select(ot=> new OriginalText {
TextValue = ot.CustomText.Any()? ot.CustomText.FirstOrDefault().TextValue:ot.TextValue,
ID = ot.ID,
LanguageId = ot.LanguageId,
Key = ot.Key
});