发现一个整数是否存在于一个整数列表中

我有这个代码:

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 

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

有任何想法吗?

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

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

如果intVariable不存在于List中,它将返回-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}); var i = 5; var x = ints.Contains(i); 

这是一个扩展方法,这允许编码像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); 
 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; } 

你应该引用Selected not ids.Contains作为最后一行。

我刚刚意识到这是一个格式问题,从OP。 不pipe你应该引用Selected中的值。 我build议添加一些Console.WriteLine调用,以确切地看到每行上打印的内容以及每个值是什么。

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