可以使用“;在“;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")));
提前谢谢。
您可以使用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"))