我的代码:
public IQueryable<Foo> GetMajors()
{
var query = (from u in db.Specializares
select u.NumeSpec).Distinct();
return query;
}
错误:Cannot implicitly convert type 'System.Linq.IQueryable.string' to 'System.Linq.IQueryable.Project.Models.Foo.'. An explicit conversion exists (are you missing a cast?)
答案 0 :(得分:1)
嗯......是的:你说“拿走每个项目的NumeSpec
,现在选择那些规格的分类;现在将这些规格归为Foo
s” - 刚赢了不行。
我希望你的意思是“使用NumeSpec来寻找看起来与众不同的Foos”
DistinctBy
的自定义实施可以达到我想要的效果,但这仅适用于IEnumerable<T>
,而不适用于IQueryable<T>
。例如:
public static IEnumerable<TSource> DistinctBy<TSource, TValue>(
this IEnumerable<TSource> source,
Func<TSource, TValue> selector)
{
var distinct = new HashSet<TValue>();
foreach(var item in source)
if(distinct.Add(selector(item)))
yield return item;
}