我在编写语句以返回连接(包含)表与项目集合匹配的结果列表时遇到问题。
我正在使用 EF 5.0 实体模型。我有一个简单VendorProfile
的表,其中包含VendorCategories
他们选择的可以加入的 PK/FK 表ProfileID
。
我无法弄清楚如何仅在 VendorProfiles 具有与集合匹配的 VendorCategories (从表单帖子中传递)的位置返回结果。我试图构建一个可以处理多个搜索条件的动态搜索功能,除了第一个我需要过滤结果的地方之外,所有搜索条件都有效criteria.categories
。
public class CustomSearchCriteria
{
public string name { get; set; }
public string company { get; set; }
public DateTime? startDate { get; set; }
public DateTime? endDate { get; set; }
public int[] categories { get; set; }
}
public IEnumerable<VendorProfile> Search(CustomSearchCriteria criteria)
{
IQueryable<VendorProfile> query = _db.VendorProfiles
.Include("VendorCategories")
.OrderBy(v => v.ProfileID);
if (criteria.categories != null)
query = query.Where(v => v.VendorCategories.Contains(criteria.categories));
if (criteria.name != string.Empty)
query = query.Where(v => v.Name.Contains(criteria.name));
if (criteria.company != string.Empty)
query = query.Where(v => v.CompanyName.Contains(criteria.company));
if (criteria.startDate != null && criteria.endDate != null)
query = query.Where(v => v.DateCreated > criteria.startDate && v.DateCreated < criteria.endDate);
return query.ToList();
}