[英]Linq, unable to list only distinct results
我有三個表,car_type,car_manufacturer和car_model。 當用戶點擊他們想要瀏覽的特定車輛類型時,我想向他們展示可用制造商的列表。 問題是制造商名單並不明顯或獨特。 因此,如果我的數據庫有三個來自馬自達的車型,馬自達將在列表上顯示3次。 這是我的控制器:
public ActionResult Browse(string click_string)
{
var x = carDB.Models
.Include(b => b.Manufacturer)
.Include(a => a.VehicleType)
.Where(a => a.VehicleType.TypeName == click_string);
return View(x.ToList());
}
如何寫這個以刪除多余的列表? 這對我來說都是新的,所以對我來說很容易。
您必須查詢Manufacturers
,而不是Vehicles
:
var x = carDB.Models.Where(a => a.VehicleType.TypeName == click_string)
.Select(a => a.Manufacturer)
.Distinct();
它通常可以很好地避免完全區分。 你想要制造商嗎? 獲得制造商。 並從那里確定您需要哪些:生成在其類型名稱中具有click_string
模型的那些:
carDB.Manufacturers.Where(manufacturer => manufacturer.Models
.Any(model => model.VehicleType.TypeName == click_string))
您可能希望包含Models
和/或VehicleType
,這取決於您要在視圖中顯示的內容。
您應該能夠使用.Distinct返回不同的元素。
var x = carDB.Models
.Include(b => b.Manufacturer)
.Include(a => a.VehicleType)
.Where(a => a.VehicleType.TypeName == click_string)
.Distinct();
首先嘗試在查詢結束時執行.Distinct()
,如果它不起作用,則可能需要為.Distinct()提供自定義比較器。
添加明顯
var x = carDB.Models
.Include(b => b.Manufacturer)
.Include(a => a.VehicleType)
.Where(a => a.VehicleType.TypeName == click_string)
.Select(y => y)
.Distinct();
.Select()可能有點冗長,但沒有在我的視覺工作室中嘗試它我把它放在那里安全
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.