无法将IQueryable <string>隐式转换为IQueryable <proj.models.foo> </proj.models.foo> </string>

时间:2014-07-30 10:01:42

标签: c# sql asp.net-mvc linq linq-to-sql

我的代码:

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?)

1 个答案:

答案 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;
}