c# - 关于linq中的返回类型

标签 c# linq

我有一个包含多个字段的表,我只需要一个字段。该表称为 ZipCompare。 我通常使用 IQueryable<> 作为 linq 查询的返回类型。但是对于以下代码,出现错误“无法将类型 System.Linq.IQueryable<AnonymousType#1> 隐式转换为 ZipCompare。那么我应该使用什么返回类型?我使用此函数来填充下拉列表控件 我的代码是:

public IQueryable<ZipCompare> GetStates()
    {
        VettingDataContext dc = new VettingDataContext(_connString);
        dc.DeferredLoadingEnabled = true;
        var query = (from c in dc.ZipCompares
                     select new { States = c.State }).Distinct();
        return query;
    }

前端代码:

ddl_BilState.DataSource = zipDAL.GetStates();
        ddl_BilState.DataTextField = "States";
        ddl_BilState.DataValueField = "States";
        ddl_BilState.DataBind();

这是一个 .net web 应用程序,我用 c# 编写。

最佳答案

查看您的查询:

var query = (from c in dc.ZipCompares
             select new { States = c.State }).Distinct();

那不是选择 ZipCompare - 它正在选择匿名类型。不清楚您 想做什么,但是如果您想返回 IQueryable<ZipCompare>你的select子句需要选择 ZipCompare .

如果您不想返回一个 ZipCompare...那么,在这种情况下,您似乎不需要匿名类型。只需使用:

var query = (from c in dc.ZipCompares
             select c.State).Distinct();

或者更简洁地说:

return dc.ZipCompares.Select(c => c.State).Distinct();

然后您更改数据绑定(bind)以绑定(bind)到值本身(使用“.”作为字段?或者空字符串?不确定)。

关于c# - 关于linq中的返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9421935/

相关文章:

c# - 缓存 LINQ 查询 - IEnumerable.Skip()

c# - 如何使用 C# LINQ 正确(深度)映射复杂对象?

c# - 如何在 Windows 应用商店 XAML/C# 应用程序中播放音频剪辑

c# - HttpClient 正在修改我更改域的原始请求

C# DataGridView 关注最后一条记录

c# - Linq To Sql 搜索多列和多个词

c# - 在 C# 中对分组结果进行排序

c# - 修改 ObservableCollection 的一项

c# - 使用 InnerText 时防止 HTMLAgilityPack 连接单词

c# - 来自 Entity Framework 的数据访问在调试期间有效,但在实时时无效