leo*_*ora 57 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
Run Code Online (Sandbox Code Playgroud)
即使数字匹配,似乎总是返回false
有任何想法吗?
Bob*_*ich 88
如果你只需要一个真/假的结果
bool isInList = intList.IndexOf(intVariable) != -1;
Run Code Online (Sandbox Code Playgroud)
如果List中不存在intVariable,它将返回-1
Run*_*tad 70
只要您的列表使用值初始化并且该值实际存在于列表中,则Contains应返回true.
我尝试了以下方法:
var list = new List<int> {1,2,3,4,5};
var intVar = 4;
var exists = list.Contains(intVar);
Run Code Online (Sandbox Code Playgroud)
确实存在确实存在.
你做的方式是正确的.它适用于该代码:x是真的.可能你在其他地方犯了一个错误.
List<int> ints = new List<int>( new[] {1,5,7}); // 1
Run Code Online (Sandbox Code Playgroud)
这是一种扩展方法,它允许像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);
}
Run Code Online (Sandbox Code Playgroud)
这允许这样的事情:
List<int> ints = new List<int>( new[] {1,5,7});
int i = 5;
bool isIn = i.In(ints);
Run Code Online (Sandbox Code Playgroud)
要么:
int i = 5;
bool isIn = i.In(1,2,3,4,5);
Run Code Online (Sandbox Code Playgroud)