簡體   English   中英

使用LINQ獲取一個具有大部分子實體的實體

[英]Using LINQ to get one entity with the most of a child entity

我在實體框架4中有一個名為Topic實體。 Topic具有一個Reply實體集合的導航屬性。

我正在嘗試根據回復數量制作一個獲取最受歡迎主題的查詢。

entityContainer.Topics.Single(x => x./* has the most replies of any topic */);

我不確定如何制作查詢來實現這一目標。

這可能會實現您的目標。

var mostPopularTopic = entityContainer.Topics
    .OrderByDescending(t => t.Replies.Count())
    .FirstOrDefault();

if(mostPopularTopic != null) // If there were any topics...
{
    // ...
}

我想這將是一個可怕的性能,tho。

一個更好的選擇可能是(略微)非規范化您的數據並在Topic表中添加一個回復計數列。 然后,您可以索引該列,並對行進行簡單排序和檢索。 這將避免對每個Replies條目進行Topics的全表掃描和計數(在查詢時)。

需要注意的是,您必須小心確保Replies計數始終得到更新,或者使用並非總是完全是最新的結果並執行后台作業來重建這些值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM