我正在开发一个使用 EF 和 mysql 的 Web 应用程序。搜索变得越来越复杂,所以我考虑创建一个 searchTable,我将在其中放置搜索过滤器所需的所有数据。对于一对一的表来说效果很好,但是一对多呢,我应该如何将它保存在一行中?例如经验或资格等问题是如何将该部分放入 EF/Linq 的搜索条件中?比如获得具有mba资格的用户。
for (int i = 0; i < searchFilter.Count; i++)
{
keyValuePair = searchFilter.ElementAt(i);
if (keyValuePair.Key.Equals("FullName"))
{
whereClause.Add("FullName.Contains(@" + i + ")");
whereValues.Add(keyValuePair.Value);
}
....
if (keyValuePair.Key.Equals("City"))
{
whereClause.Add("AddressCity.Contains(@" + i + ")");
whereValues.Add(keyValuePair.Value);
}
}
StringBuilder str = new StringBuilder();
for (int i = 0; i < whereClause.Count; i++)
{
str.Append(whereClause[i]).Append(" && ");
}
string strWhere = str.ToString().TrimEnd(" && "); //hypothetical code
AcmeDB db = new AcmeDB();
var searchResult = db.SearchSummaries.Where(strWhere, whereValues);
return searchResult;
现在,如果我想搜索让我们说经验,该怎么做?因为此表包含我需要从每个用户的单行中搜索的所有内容,所以我希望在一行中包含姓名、用户名、地址、资格、经验等。我希望我解释得对吗?