正在传递数据

本文关键字:数据 | 更新日期: 2023-09-27 18:00:13

我现在有点像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循环中传递回来。有人能告诉我怎么做吗???

正在传递数据

每次循环迭代时都会重置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();

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

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

当你找到你要找的东西时,你可以从foreach中选择break