c# - 使用存储过程时不能多次枚举查询结果
问题描述
我正在尝试用存储过程替换视图以根据关键字搜索结果。但是当我传递一个关键字时,它会抛出一个错误
一个查询的结果不能被枚举多次
但如果关键字为空,则效果很好。以下是我获取搜索结果的方法。任何人都可以就如何枚举这种情况下的结果提供任何建议吗?
public IEnumerable <BrandNameToIngredient> GetBrandNameToIngMapResults(string Keyword)
{
IEnumerable<BrandNameToIngredient> lstBrandNametoIng = from map in DB.USP_BRANDNAME_INGREDIENT_MAP()
select new BrandNameToIngredient
{
IngredientBrandNameMapID=map.INGREDIENT_PRODUCT_MAP_ID,
BrandName = map.FDA_BRAND_NAME, //From Table 1
PFCName = map.PFC_DESC==null?"":map.PFC_DESC, //From Table 1
IngredientName = map.INGREDIENT_NAME, //From Table 2
HCIngredientName = map.HC_INGREDIENT_NAME, //From Table 2
KeywordfromPage = Keyword
};
if (!string.IsNullOrEmpty(Keyword))
{
lstBrandNametoIng = lstBrandNametoIng.Where(x => x.BrandName.ToLower().Contains(x.KeywordfromPage.ToLower()) //Able to get result
|| x.PFCName.ToLower().Contains(x.KeywordfromPage.ToLower()) //Able to get result
|| x.IngredientName.ToLower().Contains(x.KeywordfromPage.ToLower()) //Error Here
|| x.HCIngredientName.ToLower().Contains(x.KeywordfromPage.ToLower())); //Error Here
}
return lstBrandNametoIng;
}
解决方案
最好先对查询进行操作,然后最后返回可枚举。
public IEnumerable<BrandNameToIngredient> GetBrandNameToIngMapResults(string Keyword)
{
var brandNametoIngQuery = DB.USP_BRANDNAME_INGREDIENT_MAP()
.Where(x => string.IsNullOrEmpty(Keyword)
|| x.BrandName.Contains(Keyword, StringComparison.OrdinalIgnoreCase)
|| x.PFCName.Contains(Keyword, StringComparison.OrdinalIgnoreCase)
|| x.IngredientName.Contains(Keyword, StringComparison.OrdinalIgnoreCase)
|| x.HCIngredientName.Contains(Keyword, StringComparison.OrdinalIgnoreCase))
.Select(map=> new BrandNameToIngredient
{
IngredientBrandNameMapID = map.INGREDIENT_PRODUCT_MAP_ID,
BrandName = map.FDA_BRAND_NAME, //From Table 1
PFCName = map.PFC_DESC == null ? "" : map.PFC_DESC, //From Table 1
IngredientName = map.INGREDIENT_NAME, //From Table 2
HCIngredientName = map.HC_INGREDIENT_NAME, //From Table 2
KeywordfromPage = Keyword
}).AsEnumerable();
}
推荐阅读
- javascript - 如何设置在没有粗糙的 css 选择器和 !important 的情况下禁用的 v-icon 的颜色?
- c# - C#串口循环中的两个线程同步问题
- reactjs - 无休止的渲染 API 循环
- beautifulsoup - 美丽的汤词表
- javascript - 尝试加载图像时写入 {% load static %} 时出现语法错误
- python - Python BeautifulSoup 在某些级别下无法找到标签
- sql - Docker 入口点 initdb 权限被拒绝
- python - pytesseract 和 opencv 读取文本的问题
- javascript - 我使用 Workbox CLI 及其 service-worker 生成器的 PWA 无法离线工作
- python - 预提交内置钩子的入口命令