查找整数列表中是不是存在整数
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如果你只需要一个真/假结果
bool isInList = intList.IndexOf(intVariable) != -1;
如果 intVariable 在 List 中不存在,它将返回 -1
【讨论】:
IndexOf
从零开始。那应该是>= 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
【讨论】:
以上是关于查找整数列表中是不是存在整数的主要内容,如果未能解决你的问题,请参考以下文章
查找是不是存在任何 i 使得 array[i] 等于 i 的算法