[英]Linq query not returning anything
因此,我有一個像這樣的SQL
查詢,
SELECT *
FROM db.history a
inner join db.history b
on a.image_id = image_id
and b.action in(200,201,202)
where a.user_id = 'someuser'
and a.action in (104)
and a.time_stamp between '2015-06-22 00:00:00' and '2015-06-22 23:59:59'
現在,我試圖在Linq
的不同部分中實現相同的查詢,如下所示:
1)首先,我從history
表中獲得了所有內容,其中action = 103 and 104
,並且介於日期范圍之間:
var history = Db.Histories
.Select(i => i)
.Where(i
=>
&& i.TimeStamp >= startDate && i.TimeStamp <= endDate
&& (i.ActionId == 103 || i.ActionId == 104 ))
.OrderBy(i => i.UserId)
.ToArray();
2)我得到了所有用戶:
var users = history.Select(i => i.UserId).Distinct().ToList();
這兩個查詢工作正常。 但是,當我嘗試遍歷所有用戶以實現SQL
查詢時,未返回任何內容:
for(var user in users)
{
var query = from h in history
join h2 in Db.Histories.Where(i => i.Action == 200 || i.Action == 201 || i.Action == 202)
on h.ImageId equals h2.ImageId
where h.UserId.Equals(user) && h.Action == 104
select h;
}
為什么是空的?
謝謝
您正在過濾h以僅包含元素h.Action == 104
而h2僅包含i.Action == 200 || i.Action == 201 || i.Action == 202
i.Action == 200 || i.Action == 201 || i.Action == 202
i.Action == 200 || i.Action == 201 || i.Action == 202
,這是完全不同的結果集,沒有h的任何元素。
如果ImageId
是您的主鍵(或任何其他唯一字段),則連接2套不同的結果集將始終導致空集
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.