3

我有以下 LINQ 到实体查询(使用 odp.net)

暗查询 = 来自 X.VIEW 中的 Elemento
            其中 Elemento.code = "10"
            使用 {Elemento.code, .Time = Elemento.Time.ToString("HH:mm")} 选择新建
查询.ToList()

ToList()并且代码在该方法上引发异常:

LINQ to Entities does not recognize the method 'System.String ToString()'

我已经阅读了所有关于此的内容,但还没有找到一个简单的解决方法。


Lazyberezovsky 有正确的答案,我之前无法让它工作,因为我正在这样做:

昏暗查询 =(来自 X.VIEW 中的 Elemento
            其中 Elemento.code = "10"
            使用 {Elemento.code, Elemento.Time}).ToList 选择新建
Dim query2 = from elemento in query
        选择新的 {elemento.code, TIME = elemento.Time.ToString("HH:mm")}

暗淡的结果 = query2.ToList()

但这不起作用,显然你必须一步完成。

4

1 回答 1

6

您可以将 DateTime 转换为内存中的字符串。只需ToList在转换时间之前拨打电话:

在 C# 中:

var query = from Elemento in X.VIEW
            where Elemento.code == "10"
            select new { Elemento.code, Elemento.Time };

var result = query.ToList() // now you are in-memory
                  .Select(x => new { x.code, Time = x.Time.ToString("HH:mm") });

在 VB.Net 中:

Dim query = From Elemento In X.VIEW
    Where Elemento.code = "10"
    Select New With {Elemento.code, Elemento.Time}

Dim result = query.ToList() _
    .Select(Function(x) New With {x.code, .Time = x.Time.ToString("HH:mm")})

顺便说一句,你为什么要选择Elemento.code结果,如果你在 where 运算符中按它过滤(它总是等于“10”)。

于 2012-10-15T21:50:44.373 回答