私はEF接続を介してアクセスするSql Server CE 3.5データベースで動作するWindowsフォームアプリケーション(.NET 4.0)を使用しています。 Linqの奇妙な動作
var list = db.UserPresentation
.Select(up => new
{
UserPresentationID = up.UserPresentationID,
PresentationName = up.PresentationName,
DateRequested = up.DateRequested,
Edit = string.Empty,
Delete = string.Empty,
Download = string.Empty
})
.OrderByDescending(up => up.DateRequested)
.ToList();
は今、私は外部変数と句を紹介し、それがゼロの結果を返します。
は、ここでは、2つの結果を返し、私の最初のクエリです。 LinqPadでこの同じコードを実行すると、2つの結果が返されます。
int userID = 2;
// load list of user presentations
var list = db.UserPresentation
.Where(up => up.UserID == userID)
.Select(up => new
{
UserPresentationID = up.UserPresentationID,
PresentationName = up.PresentationName,
DateRequested = up.DateRequested,
Edit = string.Empty,
Delete = string.Empty,
Download = string.Empty
})
.OrderByDescending(up => up.DateRequested)
.ToList();
今私は、クエリ内のユーザーIDをハードコーディングし、それが再び二つの結果を返します。
var list = db.UserPresentation
.Where(up => up.UserID == 2)
.Select(up => new
{
UserPresentationID = up.UserPresentationID,
PresentationName = up.PresentationName,
DateRequested = up.DateRequested,
Edit = string.Empty,
Delete = string.Empty,
Download = string.Empty
})
.OrderByDescending(up => up.DateRequested)
.ToList();
私は本当に困惑します。ここで何が起こっているか考えてみましょうか?
たらNULL可能日時と同様のものを持っていました。あなたは2つの結果を返すのですか? – Ray
クエリは2つの結果、yesを返します。しかし、より広い問題は、where句でハードコードされた値の代わりに変数を使用すると、なぜクエリが機能しないのですか? – draconis
それはうまくいかない理由はありません。おそらくあなたは別の 'userId'変数を持っています。 – leppie