gpt4 book ai didi

c# - Linq:获取丢失的记录

转载 作者:行者123 更新时间:2023-11-30 14:34:53 25 4
gpt4 key购买 nike

所以这是我的情况,我有 2 个表,一个是语言,一个是资源,我想做的是找到每种语言缺少的所有资源...

我想要使用的默认语言是 languageId = 1

“资源”表

Id    Key    Value    LanguageId
1 k1 test 1
2 k1 test 2
3 k1 test 3

“语言”表

Id   
1
2
3
4
5
6
7

language 包含大约 10 行语言。

现在我想做的是取出那些存在的资源(前结果)

Key   Value   LanguageId
k1 test 1
k1 test 2
k1 test 3
k1 null 4
k1 null 5
k1 null 6
k1 null 7

关于如何解决这个问题的任何建议,我尝试使用 GroupJoin 和 SelectMany,但没有很好的结果。

最佳答案

我觉得实际上您的结构还不太正确:您应该有第三个 ResourceKeys 表,其中包含 k1。这样当​​您添加资源键时,第一件事您添加的是 ResourceKeys 中的一个条目,此时所有 语言都将缺少该翻译。否则,您无法表示“没有翻译的资源”,这是一个有意义的 IMO 概念。

然后您可以交叉连接语言和 ResourceKeys,并针对资源进行组连接:

var query = from language in Languages
from resourceKey in ResourceKeys
join resource in Resources
on new { LangId = language.Id, ResId = resourceKey.Id }
equals new { LangId = resource.LanguageId,
ResId = resource.Key }
into values
select new { LangId = language.Id,
ResId = resourceKey.Id,
Value = values.SingleOrDefault() };

关于c# - Linq:获取丢失的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13249515/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com