1

LINQ クエリが奇妙な結果を返しています。

LINQ クエリ (正しくない結果を返す):

IEnumerable<PART_EVENTS> parts = db.PART_EVENTS
    .Where(p => p.OP == op.NCM_DB_NAME && p.Timestamp > tempBegin && p.Timestamp <= tempEnd)                
    .OrderBy(p => p.PART_ID_NUM)
    .ThenBy(p => p.Timestamp)
    .ToList();

Visual Studio デバッガーで返された結果は、一意のパーツ ID ごとに同じタイムスタンプを示しますが、SQL Developer またはクエリ ウィンドウ (サーバー エクスプローラー) で直接クエリを実行すると、異なるタイムスタンプが表示されます (実際、各行のタイムスタンプは異なるはずです)。

SQL クエリ (正しい結果を返す):

select * 
from PART_EVENTS
where OP = 'OP20B'
    AND "Timestamp" > to_date('11/28/2012 07:00 am', 'mm/dd/yyyy hh:mi am')
    AND "Timestamp" <= to_date('11/28/2012 10:58 am', 'mm/dd/yyyy hh:mi am')
order by part_id_num, "Timestamp"

これを修正するために多くのことを試し、2日間これを続けましたが、何が間違っているのか、またはEFによって生成されたSQLに問題があるのか​​ わかりません。

どんなアドバイスでも大歓迎です。ありがとうございました。

4

1 に答える 1

1

質問を投稿する直前に、もう 1 つ試してみることにしました。"Timestamp" エイリアスを PART_TIMESTAMP に変更します。どうやらLINQは引用されたエイリアスが好きではありません。これで問題は解決しました。

于 2012-11-28T18:39:23.427 に答える