发现一个整数是否存在于一个整数列表中
我有这个代码:
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? 因为它从来没有在该代码块中初始化