LINQ Group by for keyvaluepair data

时间:2017-09-11 05:32:59

标签: c# linq select group-by keyvaluepair

您好我在我的asp.net mvc应用程序中使用Linq来根据在答案表中插入的ID来解答问题。

我有这样的表数据:

enter image description here

在上图中你可以看到ScheduleId在两个表中有第一个表用于向scheduleid分配问题,第二个表用于存储带有scheduleid的问题的答案。

现在我要做的就是从问题表中安排问题,并得到该问题的答案,就像答案一样,有多少明星客户给出了答案。像5星,4星,3星等......等等......

所以在第二个表格中,我给出了QuestionId 1的一个例子,其中有4个答案给出了scheduleid 7543。

我想以这样的方式获取数据以获得问题列表,并给出答案的数量,例如问题1将有4个答案

Q1 5(2次) Q1 2(1次) Q1 2(3次)

像这样,所以我创建了一个类:

public class Question
    {
        public int QuestionId { get; set; }
        public string QuestionText { get; set; }
        public List<KeyValuePair<string,string>> AnswerList { get; set; }
    }

以上类

我写了这个查询:

List<Question> questionList = (from queans in Context.Get<GuestRatingAnswers>()
                                           join regque in Context.Get<GuestRankingQuestions>()
                                            on queans.QuestionId equals regque.Id
                                           orderby queans.QuestionId, queans.AddedOn descending
                                           group new { queans, regque } by new
                                           {
                                               queans.QuestionId,
                                               regque.Question,
                                               regque.AddedOn
                                           }
                               into g
                                           select new Question
                                           {
                                               QuestionId = g.Key.QuestionId,
                                               QuestionText = g.Key.Question
                                               //AnswerList = new List<KeyValuePair<string, string>>()
                                           }).OrderBy(n => n.QuestionId).ToList();

            foreach (var item in questionList)
            {

                var detail = (from queans in Context.Get<GuestRatingAnswers>()
                .GroupBy(n => n.Answer).
                     Select(grp => new KeyValuePair<string, string>(grp.Key.ToString(), grp.Count().ToString()))).ToList();

                var details = (from queans in Context.Get<GuestRatingAnswers>()
                               orderby queans.Answer descending
                               group new { queans } by new
                               {
                                   queans.Answer
                               }
                                into g
                               select new KeyValuePair<string, string>(g.Key.Answer.ToString(), g.Key.Answer.ToString()));
            }

在上面的查询中,每个我想要答案的答案作为keyvaluepair也是不完整的帮助来完成那个或者我有什么错误请提。

与var一起使用的查询作为详细信息和细节都是不同的,只是我给出了测试。

提前致谢。 :)

0 个答案:

没有答案