【问题标题】:Checking if List<T> contains specified integer number [closed]检查 List<T> 是否包含指定的整数 [关闭]
【发布时间】:2012-01-14 06:25:09
【问题描述】:

我正在使用List&lt;T&gt; 数组来存储我从数据库文件中读取的所有 ID。

假设我有 ID:5、8、15

我要做的是检查用户输入是否与此数组中的元素之一匹配。

我该怎么做?

我尝试过使用 Contains 或 Find,但无法成功。

似乎无法正常工作的代码位。只有当我输入字母 (?) 时,它才会显示 Entry ID doesn't exist!

    List<int> fetchedEntries = new List<int>();

    else if (!fetchedEntries.Contains(intNumber))
    {
        lblMessage.Text = "Entry ID doesn't exist!";
        lblMessage.ForeColor = Color.IndianRed;
        btnDeleteEntry.Enabled = false;
    }

【问题讨论】:

  • 你尝试了什么?发生了什么?
  • 发布一些代码,包含应该可以正常工作。
  • 伙计们,请耐心等待,即使是这么简单的问题,我们也应该感激,只是建议如何使答案更好,为什么要投反对票?
  • 代码看起来不错。问题似乎是intNumber 确实不在fetchedEntries 值中。您是否查看过调试器下的列表以查看其中包含哪些条目?
  • 我个人认为你只需要更好地学习使用调试器。首先,您甚至可能没有到达这个if clause,因为它是else 分支的一部分,用于进行其他检查。检查这个。然后检查您在intNumber 变量中实际收到的数字。检查您的列表是否确实包含它。检查所有类型,您可能有字符串列表,而intNumber 是整数。

标签: c# .net arraylist


【解决方案1】:

最简单的方法是使用Contains方法

List<int> theList = GetListFromDatabase();
if (theList.Contains(theNumber)) {
  // It's in the list
}

您的 Q 说这对您不起作用。你能提供更多信息吗?上述模式应该可以正常工作

【讨论】:

  • 除了: List fetchedEntries = new List();
  • 那么,GetListFromDatabase()(或其等效项)很可能没​​有按照您的想法进行操作。尝试手动填充列表,仅用于测试。 fetchedEntries.Add(intNumber);
  • @HelpNeeder 你有没有在调试器下查看fetchedEntries 看它包含哪些值?
【解决方案2】:

你有一个有 ID 或只有 ID 的对象吗?

如果只是 ID,Contains() 应该可以。既然你说没有,那就贴出你做了什么。

如果是带有id属性的对象,可以使用Where()

int userInput = 5;
IList<T> myList = getList();

if(myList.Any(x => x.ID == userInput)) {
     // Has an ID
}

【讨论】:

  • @Downvoter:至少指出问题所在,这样我可以改进我的答案或从中学习
  • 可能是为Where+Count&gt;0 而不是Any。也许不是,谁知道
  • 是否需要为 Any 添加命名空间?
  • @Snowbear:我以前从未使用过 Any(实际上,我不知道它是干什么用的)。谢谢
  • @HelpNeederg:是的,System.Linq
【解决方案3】:
List<yourobject> sd = new List<yourobject>();
sd.Where(s=>s.id == <inputID>);

【讨论】:

  • 由于多种原因无法编译
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-21
  • 1970-01-01
  • 2022-01-09
  • 2017-08-08
  • 2013-03-14
  • 1970-01-01
相关资源
最近更新 更多