次のようなテーブルがあります。
ActionID | ActionTime | ActionType | UserID
1 3/22/2013 4 8
2 3/31/2013 1 8
3 4/12/2013 3 8
各アクションにはいくつかの ActionTime があり、最新のActionTime が何らかの ActionType であるユーザーごとにすべての ActionID を取得したいと考えています。
これは私が持っているクエリですが、テストしているので、期待どおりに動作していません:
var TheActionType = list of bytes (ie. [1, 3, 5])
(from a in MyDC.Actions
where a.UserID == TheUserID
where TheActionType.Contains(a.ActionType)
orderby a.ActionTime descending (//I only want the last ActionTime each user)
select a.ActionID).ToList();
したがって、ActionType で [4,1] を渡す場合、最後の ActionTime の ActionType は 3 であるため、何も返されません。
基本的に、最初に最新の ActionID を使用して取得し、次にバイトのリストを使用して 2 番目のクエリを実行することで、これをやり直すことができることはわかっていorderby
ます.FirstOrDefault()
が.Contains()
、1 つのクエリだけでこれを行う方法があるかどうか疑問に思っていました。
ありがとう。