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

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

  • 或者它应该只检查`!= -1`,因为-1返回值被定义为否定结果. (7认同)

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)

确实存在确实存在.


gsh*_*arp 6

你做的方式是正确的.它适用于该代码:x是真的.可能你在其他地方犯了一个错误.

List<int> ints = new List<int>( new[] {1,5,7}); // 1
Run Code Online (Sandbox Code Playgroud)


Den*_*nis 6

这是一种扩展方法,它允许像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)