我有兩個模型,分類和子類別,一對多關係。加入問題 - 三張表
然後我有一個名爲Notice的模型,它與子類別(SubcategoryId爲FK)有一對一的關係。
用戶添加他們想監視的子類別。 當子類別內發生某些事情時,他們會注意到它們。
現在我試圖讓用戶得到哪些subcats被監視的概述,這樣打印出來的信息:
var SubcatsAndCheckedNotices =
from subcat in db.Subcategories
join notice in db.Notices.Where(x=>x.CompanyId == company.CompanyId) on subcat.SubcategoryId equals notice.SubcategoryId into prodGroup
from item in prodGroup.DefaultIfEmpty()
select new CheckedNoticesViewModel() {CategoryId =subcat.CategoryId, Category = subcat.Category, Subcategory = subcat, Checked = (item.SubcategoryId == null ? false : true) };
:
(icon) Category Y
Subcategory - monitored
Subcategory - monitored
Subcategory - not monitored
(icon) Category X
Subcategory - not monitored
Subcategory - monitored
Subcategory - not monitored
目前我已經做這樣解決了它
這幾乎可行,問題是我需要按照上面的說明打印出來,因此需要做出不同的選擇(對於類別),並且通過這樣做,我失去了訪問其他Category屬性的權限,例如我需要的Icon屬性。
我被卡住了,知道有更好的方法來做到這一點,但我無法弄清楚。
這裏是我的模型在全:
public class Category
{
public int CategoryId { get; set; }
public string Icon { get; set; }
public string Title { get; set; }
public ICollection<Subcategory> Subcategories { get; set; }
}
public class Subcategory
{
public int SubcategoryId { get; set; }
public string Title { get; set; }
public int CategoryId { get; set; }
public virtual Category Category { get; set; }
}
public class Notice
{
public int NoticeId { get; set; }
public int SubcategoryId { get; set; }
public virtual Subcategory Subcategory { get; set; }
public int CompanyId { get; set; }
public virtual Company Company { get; set; }
}
有什麼建議?
你不能只使用類別的導航屬性,然後打印類別,然後打印它的子類型?或者就查詢結果使用GroupBy按類別分組? –
我認爲你錯過了這一點,我需要爲輸出(針對每個子類別)合併用戶特定的通知。 – Josef
那麼你只是想顯示子類別中有「公司」添加的通知的類別和子類別?如果是的話,你可以像我建議的那樣使用GroupBy而不是Distinct? –