1

我在尝试制作演员表或进行正确的转换时遇到了一些麻烦。我有一个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>.>>

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

4

2 回答 2

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

但这将是相当随意的:你应该做一个OrderBy或一个OrderByDescending

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

用“你的”语法找到

vQuery = (from US in vQuery
 group US by US.FirstName into g
 select g.First())
于 2012-09-06T14:28:33.370 回答
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();
于 2012-09-06T14:32:22.993 回答