查找整数列表中是不是存在整数

Posted

技术标签:

【中文标题】查找整数列表中是不是存在整数【英文标题】:find if an integer exists in a list of integers查找整数列表中是否存在整数 【发布时间】:2011-04-24 20:49:35 【问题描述】:

我有这个代码:

  List<T> apps = getApps();

        List<int> ids;

        List<SelectListItem> dropdown = apps.ConvertAll(c => new SelectListItem
        
            Selected = ids.Contains(c.Id),
            Text = c.Name,
            Value = c.Id.ToString()
        ).ToList();


ids.Contains

即使数字匹配,似乎总是返回 false

有什么想法吗?

【问题讨论】:

不,你就是这么干的。 mquander 是对的——也许你可以试试 List foo = new List(); 这样的小例子for (int i = 0; i 我猜你在其他地方有错误。这种方法应该有效。 就像 mquander 说的那样,你就是这样做的。肯定有其他问题。 List ids 未初始化为任何内容。尝试添加一些已知值 ~ var ids = new List() 2,4,6,8; 【参考方案1】:

如果你只需要一个真/假结果

bool isInList = intList.IndexOf(intVariable) != -1;

如果 intVariable 在 List 中不存在,它将返回 -1

【讨论】:

IndexOf 从零开始。那应该是&gt;= 0 :) 或者真的应该只检查!= -1,因为-1返回值被定义为否定结果。【参考方案2】:

只要您的列表使用值初始化并且该值实际存在于列表中,那么 Contains 应该返回 true。

我尝试了以下方法:

var list = new List<int> 1,2,3,4,5;
var intVar = 4;
var exists = list.Contains(intVar);

并且存在确实设置为true。

【讨论】:

OP 更新了您回答的问题。他的 ids 列表似乎没有被初始化。那不应该是编译器捕获吗? 是的。未初始化的列表会导致编译器错误。但如果列表是在类级别定义的,那么它将被初始化为 null 并且编译器会很高兴。【参考方案3】:

你的做法是正确的。它适用于该代码:x 是真的。 可能你在其他地方犯了错误。

List<int> ints = new List<int>( new[] 1,5,7); // 1

List<int> intlist=new List<int>()  0,2,3,4,1; // 2

var i = 5;
var x = ints.Contains(i);   // return true or false

【讨论】:

【参考方案4】:

您应该引用 Selected 而不是 ids.Contains 作为最后一行。

我刚刚意识到这是来自 OP 的格式问题。无论如何,您都应该引用 Selected 中的值。我建议添加一些 Console.WriteLine 调用,以准确查看每行打印的内容以及每个值是什么。

更新后: ids 是一个空列表,这怎么不抛出 NullReferenceException?因为它从未在该代码块中初始化

【讨论】:

【参考方案5】:

这是一个扩展方法,这允许像 SQL IN 命令一样编码。

public static bool In<T>(this T o, params T[] values)

    if (values == null) return false;

    return values.Contains(o);

public static bool In<T>(this T o, IEnumerable<T> values)

    if (values == null) return false;

    return values.Contains(o);

这允许这样的事情:

List<int> ints = new List<int>( new[] 1,5,7);
int i = 5;
bool isIn = i.In(ints);

或者:

int i = 5;
bool isIn = i.In(1,2,3,4,5);

【讨论】:

【参考方案6】:
bool vExist = false;
int vSelectValue = 1;

List<int> vList = new List<int>();
vList.Add(1);
vList.Add(2);

IEnumerable vRes = (from n in vListwhere n == vSelectValue);
if (vRes.Count > 0) 
    vExist = true;

【讨论】:

【参考方案7】:

最好的和完整的代码在这里:

NumbersList.Exists(p => p.Equals(Input)

用途:

List<int> NumbersList = new List<int>();
private void button1_Click(object sender, EventArgs e)

    int Input = Convert.ToInt32(textBox1.Text);
    if (!NumbersList.Exists(p => p.Equals(Input)))
    
       NumbersList.Add(Input);
    
    else
    
        MessageBox.Show("The number entered is in the list","Error");
    

【讨论】:

【参考方案8】:
string name= "abc";
IList<string> strList = new List<string>()  "abc",  "def", "ghi", "jkl", "mno" ;
if (strList.Contains(name))

  Console.WriteLine("Got It");


/////////////////   OR ////////////////////////

IList<int> num = new List<int>();
num.Add(10);
num.Add(20);
num.Add(30);
num.Add(40);

Console.WriteLine(num.Count);   // to count the total numbers in the list

if(num.Contains(20)) 
    Console.WriteLine("Got It");    // if condition to find the number from list

【讨论】:

以上是关于查找整数列表中是不是存在整数的主要内容,如果未能解决你的问题,请参考以下文章

python:在大整数列表中查找小整数列表的最接近匹配

php 在没有合作伙伴的整数列表中查找数字

查找是不是存在任何 i 使得 array[i] 等于 i 的算法

Python - 在混合数组(整数,列表)中查找每次出现的值

在随机生成的整数列表中查找所有模式及其出现频率的最有效方法

使用 4 mb 查找不在 40 亿列表中的整数。但是4 MB是不够的[重复]