0

我不断从下面的代码中收到此错误消息。我究竟做错了什么?

LINQ to Entities 无法识别方法 'System.String ToString(System.Object)' 方法,并且此方法无法转换为存储表达式。

var pros = from programs in db.Programs
           select new {
               programs.ProgramID,
              val = (programs.ProgramShortName + " On: " +  (Convert.ToString(programs.ProgramStartDate) ?? ""))
                           };

lbPrograms.DataTextField = "val";
lbPrograms.DataValueField = "ProgramID";
lbPrograms.DataSource = pros;
lbPrograms.DataBind();
4

1 回答 1

4

它不识别string Convert.ToString(object)......所以......不要使用那个。您可以直接尝试.ToString(),但坦率地说,我会选择:

...
select new {
          programs.ProgramID,
          programs.ProgramShortName,
          programs.ProgramStartDate }

并担心本地的任何字符串化。或者至少是一个单独的投影(注意将AsEnumerable()其从组合更改为延迟迭代):

var formatted = from programs in pros.AsEnumberable()
                select new {
                 programs.ProgramID,
                 val = (programs.ProgramShortName
        + " On: " +  (Convert.ToString(programs.ProgramStartDate) ?? "")) };

然后绑定到formatted. 这将对 3 列进行查询,但在本地格式化。

于 2012-04-23T10:35:21.220 回答