传递数据

时间:2013-02-20 15:29:49

标签: c# .net foreach web-controls

我目前对foreach循环有点噩梦。简而言之,我要做的是拆分一个字符串,然后根据字符串过滤这些数据。然后,我需要将所述数据绑定到过滤器的控制器上。到目前为止,我有以下代码

 if (Session["Contract"] != null)
        {
            string[] contract = Session["Contract"].ToString().Split(',');
            foreach (string i in contract)
            {
                if (i.ToString() != "")
                {
                  data = data.Where(x => x.Term.Trim().ToUpper().Contains(i.ToString().Trim().ToUpper()));
                }
            }
        }

        LV_Jobs.DataSource = data;
        LV_Jobs.DataBind();

现在循环时,过滤工作正常,但是一旦完成一个项目,数据变量就被清除了?显然,我需要将“数据”传递回foreach循环。任何人都可以指出我如何做到这一点???

3 个答案:

答案 0 :(得分:0)

只需在结果列表或在for / foreach范围之外声明的任何其他数据结构中收集所需数据。

答案 1 :(得分:0)

您的data变量未清除。相反,在foreach的最后一次迭代中,i.ToString() != ""您的Where()条件不正确。所以data变成了一个空列表。

当您找到所需内容时,break可以foreach

答案 2 :(得分:0)

每次循环迭代时,您都在重置data。试试这个(取决于data是什么)

        var filteredData = new List<string>();
        if (Session["Contract"] != null)
        {
            filteredData = Session["Contract"].ToString().Split(',').Join(
                                data, 
                               i => i.ToString().Trim().ToUpper(), 
                               x => x.Term.Trim().ToUpper(),
                               (i, x) => x);
        }

        LV_Jobs.DataSource = filteredData;
        LV_Jobs.DataBind();