LINQ to Entities无法识别System.String方法

时间:2012-04-23 10:29:35

标签: .net linq c#-4.0 linq-to-entities

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

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();

1 个答案:

答案 0 :(得分: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列进行查询,但在本地格式化。