可以使用“;在“;C#和LINQ Lambda表达式中的type语句

本文关键字:表达式 type Lambda 语句 可以使 LINQ | 更新日期: 2023-09-27 18:26:52

我需要不时比较一些值,比如:

if (myCurrentUser.Role in ("Admin","User"))

但以上似乎是不可能的,相反,需要做的是:

if (myCurrentUser.Role == "Admin" || myCurrentUser.Role == "User")

它开始变得相当长。

那么,有没有一种"在"的方法呢。显然,在SQL中可以做到这一点。

此外,我还想在LINQ Lambda表达式中使用它。

var myRecords = db.mytable.where(r=>r.name in ("Roy","Jack"))

目前我把这个写为:

var myRecords = db.mytable.where(r=>((r.name == "Roy")||(r.name == "Jack")));

提前谢谢。

可以使用“;在“;C#和LINQ Lambda表达式中的type语句

您可以使用Contains来完成此操作。试试这个:

var names = new List<string>() { "Roy", "Jack" };
db.mytable.Where(r => names.Contains(r.name));

尝试使用contains,类似于:

var x = (new string[] {"A", "B"}).Contains("C");

如果添加此扩展方法:

public static class Extensions
{
    public static bool IsIn<T>(this T source, params T[] values)
    {
        return values.Contains(source);
    }
}

你可以这样写代码:

if (myCurrentUser.Role.IsIn("Admin","User"))