2

C# の Linq 内で、データベースの文字列フィールドを long 型に変換し、それをクエリで使用することは可能ですか?

ここで、tme は UNIX 時間 (long) ですが、データベースのフィールド targetdate は文字列です。

私はもう試した:

var qbt = db.Calls
.Where(x => x.team == id && long.Parse(x.targetdate) <= tme);

ただし、次のメッセージが表示されます。LINQ to Entities does not recognize the method 'Int64 Parse(System.String)' method, and this method cannot be translated into a store expression.

linqクエリの前に変換できることは知っていますが、linqクエリ内で使用する方法はありますか?

助けてくれてありがとう、

マーク

4

4 に答える 4

3

試す

var qbt = db.Calls.ToList()
.Where(x => x.team == id && long.Parse(x.targetdate) <= tme);

多くのレコードがある場合は、最初にチームごとに制限してから、以下のように ToList を呼び出すことができます

var qbt = db.Calls.Where(x => x.team == id).ToList()
 .Where(i=>long.Parse(i.targetdate) <= tme);

または使用できますAsEnumerable

var qbt = db.Calls.AsEnumerable()
.Where(x => x.team == id && long.Parse(x.targetdate) <= tme);
于 2013-05-29T10:31:24.217 に答える
0

文字列を格納しないようにデータベース テーブルを変更するか、値を文字列として比較する必要があります。その理由は、Entity Framework LINQ プロバイダーが long.Parse を理解せず、この目的のための SqlFunctions クラスにメソッドがないためです。long.Parse()を使用してください。

于 2018-06-30T07:17:35.410 に答える