【问题标题】:In List<string>, how to use the Contains() method and check if value is empty在 List<string> 中,如何使用 Contains() 方法并检查值是否为空
【发布时间】:2011-12-20 14:02:07
【问题描述】:

我有一个List&lt;string&gt; 和一些从网格视图中获取的保存值。我需要使用一些 if 语句来检查列表中的这些值之一是否为空。

一个简单的 for 循环遍历 gridview 中的所有行并从右列获取值:

for (int i = 0; i < GridView2.Rows.Count; i++)
{
            string tasks = GridView2.Rows[i].Cells[3].Text;
            datesList.Add(tasks); 
 }

这是我用来检查 2 是否在列表中的一个非常简单的代码示例:

if (datesList.Contains("2"))
{
    Label1.Text = "It contains it";
}
else
{
    Label1.Text = "No matches";    
} 

那么列表是否保存了 gridview 中的所有值,不管其中一些是空的吗?

如果我在某处错了,请纠正我,但现在真的很混乱......

【问题讨论】:

  • 您是如何从 gridview 中获取值的?你能发布一些代码吗?
  • 我刚刚编辑了更多代码;]

标签: c# asp.net .net linq string


【解决方案1】:

使用Any() 而不是这个。

datalist.Any(s => s.fieldname == "2")

【讨论】:

  • 谢谢大家,但我不明白什么是变量 s 和字段名
  • s 是对列表项的引用。这行说:列表中是否有任何项目的属性 fieldname 设置为 2?
  • 是的.. 但我不能使用这个字段名属性?
  • @Pepys - 这取决于列表中的对象是否具有该属性。如果您只有一个字符串列表,我的答案就足够了。
  • 字符串没有这个属性。试试我的答案。
【解决方案2】:
if(datesList.Any(date => !String.IsNullOrEmpty(date)))
{
   //save
}

收集设置/填充的字段:

var setDates = datesList.Select(date => !String.IsNullOrEmpty(date));

【讨论】:

    【解决方案3】:

    所以你的项目列表应该包含所有值,即使它们是"",所以如果你想要一个特定的项目,那么你可以这样做

    datalist.FirstOrDefault(i => i.FieldName == "//insert Data here");
    

    如果你想要除了带有 string.Empty 的项目之外的所有项目,那么你可以做这样的事情

    datalist.RemoveAll(i => i.FieldName != "");
    

    如果您想要特定范围内的项目,请尝试这样的操作。

    datalist.Select(i => i.FieldName.Contains("//insert criteria here"));
    

    【讨论】:

    • 对不起,我会尽量说清楚..并添加一些代码来显示其中保存的列表和值
    • @Erno 是的,对不起,我没有注意自己应该是​​。选择
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-05
    • 2020-01-07
    • 2014-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多