![](/img/trans.png)
[英]Return Dictionary<int,List<Int>> from EntityFramework table
[英]Return 2 columns, Id and count, from EF as Dictionary<int,int>
我在兩個表之間有一個FK關系,但是為了這個查詢的目的,我需要得到每個FK的行數。
例如,我有CareTaker
表和CareTakerId
作為PK; 和CareTakerId
作為FK的Animal
表。 鑒於CareTakerIds
列表,我想要每個看護者負責的所有AnimalIds。 像這樣的東西:
select CareTakerId, count(1)
from Animal
where CareTakerId in (1,2,3,4)
and AnimalTypeId = 3
group by CareTakerId
哪個回報
CareTakerId | No ColumnName
1 | 42
2 | 6
我如何在EntityFramework中執行此操作? 我需要這個結果,所以我想我會把它作為一個Dictionary<int,int>
( Dictionary<CareTakerId,Count>
) - 但我無法弄清楚如何為它編寫EF查詢..這就是我所擁有的遠:
query
.Where(r => r.AnimalTypeId == animalTypeId
&& careTakerIds.Contains(r => r.CareTakerId))
.GroupBy(r => r.CareTakerId)
// Not sure what to write here; r.CareTakerId doesn't exist
.Select(r => new {r.key, r.value })
.ToDictionary(kvp => kvp.Key, kvp => kvp.value);
如何在實體框架中選擇CareTakerId
和count(1)?
在您的Select
執行此操作:
//...
//You have groups here,
//so you can call Count extension method to get how many elements belong to the current group
.Select(g => new {CareTakerId=g.Key,Count= g.Count() })
.ToDictionary(e=> e.CareTakerId,e=> e.Count);
你非常接近,只需添加“Count()”方法。
query
.Where(r => r.AnimalTypeId == animalTypeId
&& careTakerIds.Contains(r => r.CareTakerId))
.GroupBy(r => r.CareTakerId)
.Select(r => new {r.key, value = r.Count() })
.ToDictionary(kvp => kvp.Key, kvp => kvp.value);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.