gpt4 book ai didi

c# - Linq 分组 - 我的 'V' 去哪儿了?

转载 作者:太空宇宙 更新时间:2023-11-03 12:32:26 26 4
gpt4 key购买 nike

在下面的代码中:

    var finalArticles =
from domainArticle in articlesFoundInDomain

join articleCategoryVersion in dbc.ArticlesCategoriesVersions
on domainArticle.ArticleID equals articleCategoryVersion.ArticleID
join articleCategory in dbc.ArticleCategories
on articleCategoryVersion.CategoryID equals articleCategory.CategoryID

where articleCategory.ParentID == 52

group articleCategory by articleCategory.CategoryID
into newArticleCategoryGroup

我知道 group 子句应该返回一个 IEnumerable,其中 k 是键,在本例中是 CategoryID。

我认为此时我误解了 Linq,因为我假设对于每个“k”,“v”中应该有一个文章列表,但我不了解机制或术语等。当我尝试将此语句转换到一个新的匿名对象中时,我似乎没有收到任何文章……它们在哪里?

编辑:好的,我有一段代码可以正常工作,但不幸的是它多次访问 SQL 服务器:

var articlesAssociatedWithKnowledgeTypes =
from categories in dbc.ArticleCategories

join categoryVersions in dbc.ArticlesCategoriesVersions
on categories.CategoryID equals categoryVersions.CategoryID

join articles in articlesFoundInGivenDomain
on categoryVersions.ArticleID equals articles.ArticleID

where categories.ParentID == 52 && articles.Version == categoryVersions.Version

select new
{
ArticleID = articles.ArticleID,
ArticleTitle = articles.Title,
ArticleVersion = articles.Version,
CategoryID = categories.CategoryID,
CategoryName = categories.Name
} into knowledgeTypesFlat
group knowledgeTypesFlat by new { knowledgeTypesFlat.CategoryID, knowledgeTypesFlat.CategoryName } into knowledgeTypesNested
select new
{
CategoryID = knowledgeTypesNested.Key.CategoryID,
CategoryName = knowledgeTypesNested.Key.CategoryName,
Articles = knowledgeTypesNested.ToList()
};

我认为 Articles 上的 ToList() 可以解决这个问题,但事实并非如此。但是,尽管我不确定这是否是最佳的,但代码仍然有效?

最佳答案

分组返回 IGrouping 的枚举秒。 IGrouping<K, V>本身实现 IEnumerable<V> .将每个组视为该组所有成员的可枚举加上一个额外属性 Key

关于c# - Linq 分组 - <k,v> 我的 'V' 去哪儿了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42231988/

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