gpt4 book ai didi

c# - 如何使用 LINQ 将查询结果返回到字典

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

我正在处理一个 MVC 项目。我需要返回一个对象,该对象将菜单项分成四个一组,以使用 foreach 迭代显示在 View 中。由于这是一个传递给 View 的模型,我需要返回一个可以绑定(bind)到 .cshtml 上的非通用集合类。

我的想法是,我可以根据 LINQ 中某种类型的计数对列表进行分组,以便将四个新的列表项添加到每个字典键。但是,我还没有找到足以成为字典的表达式。我可以通过创建另一种方法并再次遍历集合以根据计数分配键来相当轻松地解决这个问题,但这似乎是不必要的迭代和不好的做法。

目前,我正在处理以下查询。

        var itemsDict = rssDataContext.rss_Application_Blog_Category_Relationships
.Where(x => x.Application_Blog.rss_Application.ID == 1)
.Where(x => x.Blog_Category_ID == 1)
.Select(x => new MenuItem
{
Name = x.rss_Application_Blog.Blog_Title,
Uri = x.rss_Application_Blog.Blog_Uri,
ID = x.rss_Application_Blog.ID
});

但是有没有办法将这个查询分成 4 个类的组,然后填充到 Dictionary > 中?

最佳答案

我怀疑你可以这样做:

var itemsDict = rssDataContext.rss_Application_Blog_Category_Relationships
.Where(x => x.Application_Blog.rss_Application.ID == 1)
.Where(x => x.Blog_Category_ID == 1)
.Select(x => new {
x.rss_Application_Blog.BlogTitle,
x.rss_Application_Blog.BlogUri,
x.rss_Application_Blog.ID
})
.AsEnumerable() // Do the rest of the query in-process
.Select((value, index) => new { value, index })
.ToLookup(pair => pair.index % 4,
pair => new MenuItem {
Name = pair.value.Blog_Title,
Uri = pair.value.Blog_Uri,
ID = pair.value.ID
});

请注意,这会返回一个 Lookup 而不是 Dictionary,但这实际上是您想要的更接近的模型。

关于c# - 如何使用 LINQ 将查询结果返回到字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10170875/

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