c# - 不支持 ToString() 方法

标签 c# database linq-to-sql

我正在尝试在 C# 中创建一个选择列表。我的代码:

       var ceremonies = db.Ceremonies;
        var Ceremonies =
            from c in ceremonies
            select new SelectListItem
            {
                Text = c.Name + "_" + c.Date,
                Value = c.Id.ToString()
            };

但是我在这里遇到类似ToString() 方法不受支持 的异常。有什么问题吗?

最佳答案

您的查询正在转换为 SQL - 但无法正确处理对 ToString 的调用。通常,解决此问题的最简单方法是将查询有效地拆分为需要在数据库中完成的部分,然后通过 AsEnumerable 切换到 LINQ to Objects:

var ceremonies = db.Ceremonies
                   .Select(c => new { c.Name, c.Date, c.Id }
                   .AsEnumerable()
                   .Select(c => new SelectListItem {
                               Text = c.Name + "_" + c.Date, 
                               Value = c.Id.ToString()
                           });

顺便说一句,声明两个只根据大小写变化的局部变量会带来非常糟糕的可读性。

关于c# - 不支持 ToString() 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11819673/

相关文章:

javascript - 从 phonegap 上的服务器检索数据

c# - 使用 LINQ to SQL 是否有助于防止 SQL 注入(inject)

c# - 为什么 IEnumerable.Count() 的上限为 200?

c# - 如何将可移植数据库添加到 MVC 应用程序?

c# - 两个包含接口(interface)的列表与一个包含具有两个接口(interface)的结构的列表

c# - ASP.NET MVC 模型绑定(bind)到列表中

c# - LINQ外连接动态OrderBy

c# - 如何在Ravendb中创建复合索引

c# - Entity Framework 中不支持泛型类作为模型吗?

java - 无法获得连接 : general error