Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 在MVC中返回值的循环_Asp.net Mvc_Loops_Solr - Fatal编程技术网

Asp.net mvc 在MVC中返回值的循环

Asp.net mvc 在MVC中返回值的循环,asp.net-mvc,loops,solr,Asp.net Mvc,Loops,Solr,我在MVC中创建了这个循环: //this identify my user string tmpUser = System.Web.HttpContext.Current.User.Identity.Name; //this find user in database and compare his username with Identity name and returns userID using (var dbUs = new userDbEntities()) { var w

我在MVC中创建了这个循环:

//this identify my user
string tmpUser = System.Web.HttpContext.Current.User.Identity.Name;

//this find user in database and compare his username with Identity name and returns userID
using (var dbUs = new userDbEntities())
{
   var whoisloged = (from user in dbUs.UsersTables
   where user.username == tmpUser
   select user.userID).FirstOrDefault(); 

   //get all destinations for user userid
   var list1 = dbUs.CustomerTables.Where(m => m.UserId == whoisloged).Select(m => m.Customer);

   var list2 = dbUs.CustomTypes.Where(m => list1.Contains(m.Id_NewCustomerType)).Select(m => m.CustomerType);

   //this is LOOP that must return my values
   foreach (var customer in list2)
   {
      string test = customer;
      return new SolrQuery(test);
   }
现在问题在我的每个循环中。。。为什么只返回第一个值?不管我在数据库里有更多的数据

我的结果应该是这样的:

return new SolrQuery(A) + return new SolrQuery(B) + return new SolrQuery(C); // + is refer as AND
e、 g.用户某人登录应用程序。他/她已在数据库中保存了他/她的角色(代码中的CustomerTable),例如A、B和C,因此循环应返回如下内容:

return new SolrQuery(A) + return new SolrQuery(B) + return new SolrQuery(C); // + is refer as AND

真的非常感谢您的帮助和任何想法。

第一次返回时,不仅留下了foreach,还留下了整个函数(正如return所要做的那样)。如果要在循环中执行多个查询,则必须收集结果并在之后返回它们

string result ="";
foreach (var customer in list2)
{
  result = result + new SolrQuery(customer);
}
return result;
应该会有效果。

问题在于:-

return new SolrQuery(test);
返回单个
SolrQuery
,然后退出循环中的函数

您可能要做的是修改您的方法签名:-

public SolrQuery MyMethod(...)
致:-


或者,更好的是,您可以只返回LINQ查询的结果(已经是一个序列)。替换:-

var list2 = dbUs.CustomTypes.Where(m => list1.Contains(m.Id_NewCustomerType))
                            .Select(m => m.CustomerType);
与:-

return dbUs.CustomTypes.Where(x => list1.Contains(x.Id_NewCustomerType))
                       .Select(x => new SolrQuery(x.CustomerType))
                       .ToList();
然后在之后删除所有内容。

我已经解决了:

            List<string> result = new List<string>();

            foreach (var customer in seznam2)
            {
                result.Add(customer);
            }

            SolrQueryInList queryInList = new SolrQueryInList("destination", result);

            return queryInList;
列表结果=新列表();
foreach(seznam2中的var客户)
{
结果。添加(客户);
}
SolrQueryInList queryInList=新的SolrQueryInList(“目的地”,结果);
返回查询列表;

我看到我不需要“string test=customer”,我输入了return new SoleQuery(customer),但结果是相同的,它只返回一个结果…但没有返回语句。。。foreach返回给我正确的所有值。您能给出
SolrQuery(test)
的定义吗?您所说的定义是什么意思。SolrQuery来自库SolrNet,您可以使用数据包管理器导入该库:安装软件包solrnetSolrQuery()定义为:SolrQuery.SolrQuery(字符串查询)构造函数,如果您的意思是它在句子result=result+中的第二个结果下划线。。。并表示:局部变量“result”在访问之前可能未初始化。。。这意味着什么…然后初始化它(见上面我的示例)。好的,有帮助,但现在在返回结果的最后一个结果下面划线,出现以下错误:无法将表达式类型“string”转换为返回类型“SolrNet.ISolrQuery”。。。真的非常感谢您的帮助,您的想法似乎很有用,因此我将您的答案标记为有用。您是否最好只做
新的SolrQueryList(“目的地”,seznam2)而不是将所有内容从一个列表转储到另一个列表?
            List<string> result = new List<string>();

            foreach (var customer in seznam2)
            {
                result.Add(customer);
            }

            SolrQueryInList queryInList = new SolrQueryInList("destination", result);

            return queryInList;