首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >匿名类型上的ToDictionary

匿名类型上的ToDictionary
EN

Stack Overflow用户
提问于 2015-05-07 23:14:04
回答 1查看 674关注 0票数 0

我正在尝试模仿一个已经在我正在处理的代码库中创建的函数。第一个函数可以工作,但是当我尝试修改它以使用字典中的字符串时,它不能工作。我得到System.Linq.Enumerable+WhereSelectEnumerableIterator2[<>f__AnonymousType32System.Int32,System.String,System.String]作为评论的值。我知道第一个是使用average,它是一个聚合,但我不知道如何聚合评论,因为它们是字符串。

代码语言:javascript
复制
public static Dictionary<int, double> getRatingAverages(string EventID)
        {
        List<tbMultipurposeVertical> allMain = DynamicData.Vertical.getRecords(EventID, appcode, -2).ToList();

        Dictionary<int, double> ratings;

        using (FBCDBDataContext db = new FBCDBDataContext())
            {
            ratings = db.tbMultipurposeVerticals.Where(v => v.eventid == EventID & v.appcode == "ratinglabel" & v.label == "Rater")
                .Select(v => new
                {
                    AbstractID = v.parent,
                    Rating = int.Parse(db.tbMultipurposeVerticals.First(r => r.parent == v.id & r.label == "Rating").value)
                })
                .GroupBy(r => r.AbstractID).ToDictionary(k => k.Key, v => v.Select(r => r.Rating).Average());
            }


        return ratings;
        }


    public static Dictionary<int, string> getRatingComments(string EventID)
    {
        List<tbMultipurposeVertical> allMain = DynamicData.Vertical.getRecords(EventID, appcode, -2).ToList();

        Dictionary<int, string> comments;

        using (FBCDBDataContext db = new FBCDBDataContext())
        {
            comments = db.tbMultipurposeVerticals.Where(v => v.eventid == EventID & v.appcode == "ratinglabel" & v.label == "Rater")
                .Select(v => new 
                {
                    AbstractID = v.parent,
                    Comment = db.tbMultipurposeVerticals.First(r => r.parent == v.id & r.label == "Comment").ToString()

                })
                .GroupBy(r => r.AbstractID).ToDictionary(k => k.Key, v => v.Select(r => r.Comment).ToString());
        }


        return comments;
    }
EN

回答 1

Stack Overflow用户

发布于 2015-05-08 00:09:20

在第一种方法中,您取评分的平均值(一种聚合方法)。对于第二种方法,您现在将其视为单个注释。由于.GroupBy()的原因,它不会给您提供您期望的结果

正如Steve Greene所建议的,您可以获取第一个注释(v.First().ToString()v.FirstOrDefault().ToString()),也可以考虑连接注释(v.Concat()) (如果这在您的应用程序中有意义)。

否则,您可能希望将字典设置为Dictionary<int, List<string>>格式

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30105154

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档