不支持ToString()方法

use*_*860 2 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()
            };
Run Code Online (Sandbox Code Playgroud)

但在这里我得到的例外情况就像ToString() method not supported.有什么问题 ?

Jon*_*eet 14

您的查询正在转换为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()
                           });
Run Code Online (Sandbox Code Playgroud)

顺便说一下,声明两个局部变量只是根据情况而变化,这给出了非常讨厌的可读性.