隐式转换IQueryable <igrouping <string,t =“”>&gt;键入IQueryable <t> </t> </igrouping <string,>

时间:2012-09-06 14:26:33

标签: c# .net linq

我在尝试演员或进行正确的转换时遇到了一些麻烦。 我有类型IQueryable<T> T的查询是一个类:

var query = (from x in query
             group x by US.FirstName into g
             select g).Distinct();

我收到此错误:

  

无法将System.Linq.IQueryable<System.Link.IGrouping<string,T>>类型隐式转换为System.Linq.IQueryable<T>。&gt;&gt;

我想要执行的事实是返回查询的唯一值。

2 个答案:

答案 0 :(得分:1)

vQuery = vQuery.GroupBy(x => x.FirstName)
         .Select(g => g.First());

但这是相当随意的:你应该OrderByOrderByDescending

.Select(g => g.OrderBy(x => x.WhatEverYouWant).First())

找到“你的”语法

vQuery = (from US in vQuery
 group US by US.FirstName into g
 select g.First())

答案 1 :(得分:0)

在LINQ中执行分组时,实际上会返回IGrouping<TKey, TValue>的集合。您正尝试将此结果放回到您为原始查询vQuery定义的变量中,该变量的类型为IQueryable<T>。您需要将LINQ查询的结果放入类型为IGrouping<TKey, TValue>的单独变量中:

var groupedValues = (from US in vQuery
                     group US by US.FirstName into uniqueFirstName
                     select uniqueFirstName).Distinct();