1
我有3個類/表:Car
,User
和UserVote
(這是其他兩個之間的橋接表)。組合實體框架查詢中的內連接和左連接
例如:
Car (id/name):
1/Ford Focus
2/Honda Civic
3/Citroen C2
User (id/ignoreUser):
1/false
2/true
3/false
UserVote (UserId/CarId)
1/2
1/3
2/1
3/2
我有獲取基於投票數前X車的方法。
public IQueryable<Car> GetTopCars(int count)
{
return context.Car
.Include(car => car.UserVote)
.Where(car => car.UserVote.Count > 0)
.OrderByDescending(car => car.UserVote.Count)
.Take(count);
}
此代碼僅查看Cars和UserVote表,並未查看User上的ignoreUser字段。我試圖更新我的實體框架代碼加入到用戶表,但我沒有任何成功。最終,我正在尋找獲得由UserVotes數量排序的Cars列表,不包括IgnoreUser設置爲true的列表。在上面的例子中,我希望該方法以正確的順序返回IQueryable(本田思域,然後是雪鐵龍C2)。
我想我想採取汽車,然後離開加入此用戶內部與UserVote加入?這可能與實體框架?
這個問題是根據在評論中給出的建議給出的previous question。
當我在連接操作中使用第二個選項時,我得到了重複的汽車返回 - 每個投票一個。此外,用戶投票總是等於我認爲是由於內部聯接? – psych
我會嘗試修復第二個變體,您是否可以不使用第一個解決方案,我相信它的工作原理。 – octavioccl
@psych,我解決了它,但我強烈建議使用第一個解決方案,如果可以的話。恕我直言,它更清潔 – octavioccl