1

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

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

但似乎上述可能是不可能的,而是需要做:

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

这开始变得很长。

那么有没有办法有一个“in”的方法。显然,可以在 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")));

提前致谢。

4

3 回答 3

7

你可以用Contains. 尝试这个:

var names = new List<string>() { "Roy", "Jack" };
db.mytable.Where(r => names.Contains(r.name));
于 2013-08-07T09:23:33.850 回答
3

尝试使用包含,例如:

var x = (new string[] {"A", "B"}).Contains("C");
于 2013-08-07T09:25:36.983 回答
2

如果添加此扩展方法:

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"))
于 2013-08-07T14:23:29.863 回答