C# 多条件下的第二个Linq滤波器
我的课程(简化)如下:C# 多条件下的第二个Linq滤波器,c#,linq,C#,Linq,我的课程(简化)如下: class AppMeta { public int Id { get; set; } public string Scope { get; set; } public User CreatedBy { get; set; } } 我创建了一个LINQ语句,它通过交叉引用整数列表并丢弃匹配项来正确过滤结果: var hiddenApps = List<int>(); //populate hiddenApps var listItem
class AppMeta
{
public int Id { get; set; }
public string Scope { get; set; }
public User CreatedBy { get; set; }
}
我创建了一个LINQ语句,它通过交叉引用整数列表并丢弃匹配项来正确过滤结果:
var hiddenApps = List<int>();
//populate hiddenApps
var listItems = List<rawdata>;
//populate listItems
List<AppMeta> apps = AppMeta.Collection(listItems).Where(i => !hiddenApps.Contains(i.Id)).ToList()
var hiddenApps=List();
//填充hiddenApps
var listItems=列表;
//填充列表项
List apps=AppMeta.Collection(listItems).Where(i=>!hiddenApps.Contains(i.Id)).ToList()
我的问题是,我需要进一步筛选此列表,如下所示
(其中Scope==“user”&&Where user.LoginName==CurrentUser.LoginName)
我仍然可以在一个Linq语句中这样做,即我可以将它与上面的行结合起来吗?执行此操作的最佳方法是什么?您可以在
Where
子句中指定多个条件。将Where子句修改为:
.Where(i => !hiddenApps.Contains(i.Id)
&& i.Scope == "user"
&& i.CreatedBy.LoginName == CurrentUser.LoginName )
所以你的问题是:
List<AppMeta> apps = AppMeta.Collection(listItems)
.Where(i => !hiddenApps.Contains(i.Id)
&& i.Scope == "user"
&& i.CreatedBy.LoginName == CurrentUser.LoginName)
.ToList();
List apps=AppMeta.Collection(listItems)
.Where(i=>!hiddenApps.Contains(i.Id)
&&i.范围==“用户”
&&i.CreatedBy.LoginName==CurrentUser.LoginName)
.ToList();
与其创建另一个查询,不如尝试将这些条件添加到Where
方法中
var loginName = CurrentUser.LoginName;
List<AppMeta> apps = AppMeta.Collection(listItems)
.Where(i => !hiddenApps.Contains(i.Id) &&
i.Scope == "user" &&
i.CreatedBy == loginName )
.ToList();
var loginName=CurrentUser.loginName;
列表应用程序=AppMeta.Collection(listItems)
其中(i=>!hiddenApps.包含(i.Id)和
i、 作用域==“用户”&&
i、 CreatedBy==loginName)
.ToList();
只要确保
CurrentUser.LoginName
类型为User
就可以了。一旦我测试了它,系统允许我,我会标记它。