我目前对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循环。任何人都可以指出我如何做到这一点???
答案 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();