具有不同功能的 LINQ 问题

  • 本文关键字:LINQ 问题 功能 linq
  • 更新时间 :
  • 英文 :


>我正在尝试将不同的记录绑定到下拉列表。在我添加了 linq 查询的不同函数后,它说"数据绑定:'System.String' 不包含名为 'Source' 的属性。我可以保证该列名称是"源"。在进行不同搜索时,该名称会丢失吗?

我的后端代码:

public IQueryable<string> GetAllSource()
        {
            PromotionDataContext dc = new PromotionDataContext(_connString);
            var query = (from p in dc.Promotions
                         select p.Source).Distinct();
            return query;
        }

前端代码:

PromotionDAL dal = new PromotionDAL();
        ddl_Source.DataSource = dal.GetAllSource();
        ddl_Source.DataTextField = "Source";
        ddl_Source.DataValueField = "Source";
        ddl_Source.DataBind();

有人有解决方案吗?提前谢谢你。

您已经在 LINQ 查询中选择Source,这就是结果IQueryable<string>的方式。然后,还将Source指定为要在数据绑定的每个字符串中查找的属性。只需取出更改数据绑定中DataTextFieldDataValueField属性的语句即可。

或者,您可以从查询中删除要p.Source的投影并返回IQueryable<Promotion> - 但随后您将获得不同的促销而不是不同的来源

另一个快速说明 - 使用查询语法并不能真正帮助您GetAllSources查询。我只是把它写成:

public IQueryable<string> GetAllSource()
{
    PromotionDataContext dc = new PromotionDataContext(_connString);
    return dc.Promotions
             .Select(p => p.Source)
             .Distinct();
}
查询

表达式非常适合复杂的查询,但是当您只有一个选择或 where 子句和一个简单的投影时,使用点表示法更简单 IMO。

您正在尝试绑定字符串,而不是促销对象...和字符串没有源属性/字段

您的方法返回一组字符串,而不是一组具有属性的对象。

如果确实要绑定到属性名称,则需要一组具有属性的对象(例如,通过编写select new { Source = Source }

相关内容

  • 没有找到相关文章

最新更新