3

次のLINQtoエンティティクエリ(odp.netを使用)があります:

薄暗いクエリ=X.VIEWのElementoから
            ここで、Elemento.code = "10"
            New With {Elemento.code、.Time = Elemento.Time.ToString( "HH:mm")}を選択します
query.ToList()

そして、コードはToList()メソッドに例外をスローします。

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

私はこれについてSO全体を読みましたが、簡単な回避策は見つかりませんでした。


Lazyberezovskyには正しい答えがあります。これを行っていたため、以前は機能させることができませんでした。

Dim query =(X.VIEWのElementoから
            ここで、Elemento.code = "10"
            New With {Elemento.code、Elemento.Time})。ToListを選択します
Dimquery2=クエリのelementoから
        New With {elemento.code、TIME = elemento.Time.ToString( "HH:mm")}を選択します

薄暗い結果=query2.ToList()

しかし、これは機能しません。明らかに、1つのステップで実行する必要があります。

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")})

ところで、where演算子でフィルタリングしているのに、なぜ結果を選択Elemento.codeしているのですか(常に「10」に等しくなります)。

于 2012-10-15T21:50:44.373 に答える