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

时间:2010-10-13 13:36:21

标签: c# arrays integer

我有这段代码:

  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,即使数字匹配

任何想法?

8 个答案:

答案 0 :(得分:81)

如果您只需要一个真/假的结果

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

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

答案 1 :(得分:66)

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

我尝试了以下内容:

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

存在确实是真的。

答案 2 :(得分:5)

你做的方式是正确的。它适用于该代码: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

答案 3 :(得分: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);

答案 4 :(得分:2)

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

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");
    }
}

答案 5 :(得分:1)

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;
}

答案 6 :(得分:0)

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

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

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

答案 7 :(得分:0)

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
}