gpt4 book ai didi

linq - 如何在 Linq 中过滤子集合

转载 作者:行者123 更新时间:2023-12-05 01:36:09 24 4
gpt4 key购买 nike

我需要使用单个 linq 查询过滤 linq 中实体的子元素。这可能吗?

假设我有两个相关的表。诗句和诗句翻译。 LINQ to SQL 创建的实体是这样的,我有一个 Verse 对象,其中包含一个子对象,该子对象是 VerseTranslation 的集合。

现在如果我有以下 linq 查询

var res = from v in dc.Verses
where v.id = 1
select v;

我得到一个 id 为 1 的 Verses 集合,每个 verse 对象包含来自 VerseTranslations 的所有子对象。

我还想做的是过滤 Verse Translations 的子列表。

到目前为止,我能想到的唯一方法是使用新的匿名类型或其他方式。如下

var res= from v in dc.Verses
select new myType
{
VerseId = v.VerseId,
VText = v.Text,
VerseTranslations = (from trans in v.VerseTranslations
where languageId==trans.LanguageId
select trans
};

上面的代码有效,但我必须为它声明一个新类。有没有办法以这样的方式做到这一点,以便可以将子表的过滤合并到第一个 linq 查询中,这样就不必声明新的类。

问候,MAC

最佳答案

多亏了设拉子的指点,我终于让它工作了。

        DataLoadOptions options = new DataLoadOptions();
options.AssociateWith<Verse>(item => item.VerseTranslation.Where(t => languageId.Contains(t.LanguageId)));

dc.LoadOptions = options;

var res = from s in dc.Verse
select s;

这不需要投影或使用新的扩展类。

感谢您的所有投入。

关于linq - 如何在 Linq 中过滤子集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1226648/

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