我有一個名為 Business 的類、一個名為 Tag 的類和一個名為 BusinessTagLink 的類。
Business 和 Tag 都具有以下屬性:
public virtual IList<BusinessTagLink>? BusinessTagLinks { get; set; }
每個企業都通過 BusinessTagLink 表鏈接到一個或多個標簽。
我的 BusinessTagLink 類如下所示:
public class BusinessTagLink : BaseEntity
{
public int BusinessTagLinkId { get; set; }
public int BusinessId { get; set; }
public int TagId { get; set; }
public virtual Business Business { get; set; }
public virtual Tag Tag { get; set; }
}
我正在嘗試構建一個過濾器,允許用戶通過與標簽串列互動來過濾企業串列。我目前認為他們會點擊標簽,然后該標簽的 ID 將被添加到一個 int 陣列中,該陣列將與潛在企業的完整串列一起傳遞給過濾器方法。就像是:
public static IQueryable<Business> Filter(this IQueryable<Business> businesses, int[] tagIds) { }
我真正苦苦掙扎的是如何使用這些引數來回傳過濾后的業務串列。我認為 LINQ 查詢將使用 .Contains() 和/或 .Any() 但除此之外我一無所知。
return businesses.Where(tagIds.Contains(x => x.BusinessTagLinks.Select(y => y.TagId)))
return businesses.Where(x => x.BusinessTagLinks.Any(y => y.TagId == [no idea how to target array here]));
任何建議將不勝感激。
uj5u.com熱心網友回復:
return businesses.Where(x => x.BusinessTagLinks.Any(y => tagIdArray.Contains(y.TagId)));
這基本上是說給我任何業務標簽鏈接都有一個存在于您提供的陣列中的 tagId 的業務。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/422409.html
標籤:
