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

我有这个密码:

  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

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

有什么想法吗?

226003 次浏览

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

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

如果在 List 中不存在 int 变量,它将返回 -1

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

我尝试了以下方法:

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

而存在确实被设置为真实。

你做的方法是正确的,它可以很好地运行代码: 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

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

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

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

下面是一个扩展方法,它允许像 SQLIN 命令那样编写代码。

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

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

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