使用Array MVC循环IEnumerable

时间:2015-08-22 19:38:31

标签: c# arrays asp.net-mvc linq

一直在努力解决这个问题,并且不知道如何实施。似乎很容易。

我有一个带有多个关键字的搜索框。然后,我将这些关键字传递给我的存储库中的IENumerable方法。

public IEnumerable<diss> GetDissSearch(string b)

然后我将关键字放入数组 - b包含单词串并使用Split方法。

string[] sArray = strSearchString.Split();

然后我使用foreach循环来转换我的数组中的单词,但在我的foreach循环中,我将linq语句放置如下:

foreach(string s in sArray){

var myLoop = (from p in mytable
              where p.userFirstName.Contains(s)
              && p.lastName.Contains(s)
              select new myModel {
              firstName = p.userFirstName,
              lastName = p.userLastName
              }).ToList();

return myLoop;

}

因此,如果用户输入两个单词 - 例如,名字和姓氏,您希望该集合将被调用两次。同样,如果用户输入中间名,则会调用三次收集。目前,此系列仅运行一次。

有没有办法根据我的数组中包含的关键字数量多次调用此可依赖项?

感谢。

1 个答案:

答案 0 :(得分:2)

使用Any(或All,如果您希望所有sArray条款存在)ex包裹搜索查询。方法,这样每个数据库行只会针对数组进行一次评估:

var myLoop = (from p in mytable
              where sArray.Any(sa => p.userFirstName.Contains(sa)
              && p.lastName.Contains(sa))
              select new myModel
              {
                firstName = p.userFirstName,
                lastName = p.userLastName
              }).ToList();

另外,如果您希望条款在 第一个名称,请考虑使用&&替换查询中的||运算符名。