0

我目前对 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 循环中传回。谁能指出我如何做到这一点的方向???

4

3 回答 3

0

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

于 2013-02-20T15:31:40.943 回答
0

您的data变量未清除。相反,在foreachwhere i.ToString() != ""your Where()condition is not true的最后一次迭代中。所以data变成了一个空列表。

当你找到你要找的东西时,你就可以break离开了。foreach

于 2013-02-20T15:32:45.853 回答
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();
于 2013-02-20T15:45:37.560 回答