我只是学习使用lambda表达式,并在几天前转向了Dapper。我正在开发一个应用程序,该应用程序使用用户名填充listView
,以便进行某些帐户维护。我在排序的一部分时遇到问题:
Global.allUsers
。 List<int> migrated
( List<int> migrated
),因此不需要出现在listView
我正在使用以下内容获取所有用户的列表:
var uniqUsers = Global.allUsers.OrderBy(n => n.lastNames).GroupBy(q => q.salesIDs);
要仅使用尚未迁移的用户填充listView
,我需要仅选择migrated
没有q.salesIDs
用户。我不知道如果/如何在不使用某种foreach
情况下做到这一点。似乎应该有一种方法来选择它。
当然,我正在循环遍历uniqUsers
,并使用每个对象的属性中的值填充listView
。我可以添加一个语句来检查当前ID是否migrated
,但我的直觉告诉我,我可以使用select语句执行此操作并为自己保存一步。
我在想这样的事情:
var uniqUsers = Global.allUsers.Where(i => i.salesIDs not in migrated).OrderBy(n => n.lastNames).GroupBy(q => q.salesIDs);
但是i => i.salesIDs not in migrated
中没有削减它。
这可以满足您的需求:
var uniqUsers = allUsers.Where(x => migrated.Contains(x.salesIDs))
.OrderBy(y => y.lastNames)
.GroupBy(z => z.salesIDs).SelectMany(v => v).ToList();
获取salesID
migrated
所有用户,然后按lastNames
salesID
,然后按salesID
。 SelectMany()
将元素投影到序列, ToList()
将枚举结果。