【问题标题】:Cannot implicitly convert IQueryable<string> to IQueryable<Proj.Models.Foo>无法将 IQueryable<string> 隐式转换为 IQueryable<Proj.Models.Foo>
【发布时间】:2014-07-30 10:01:42
【问题描述】:

我的代码:

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

【问题讨论】:

  • 请包括NumeSpecFoo的定义:否则我们只是猜测。

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


【解决方案1】:

嗯...是的:您是说“获取每个项目的NumeSpec,现在获取这些规范的不同集合;现在将这些规范返回为Foos” - 那是行不通的。

我希望您的意思是“使用 NumeSpec 找到外观独特的 Foos”

DistinctBy 的自定义实现可以满足我的期望,但仅适用于IEnumerable&lt;T&gt;,不适用于IQueryable&lt;T&gt;。例如:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-14
    • 1970-01-01
    • 2020-04-23
    • 1970-01-01
    • 2012-02-07
    • 2017-11-16
    • 1970-01-01
    相关资源
    最近更新 更多