C# 从列表中ID所在的集合中选择“全部”
我正在学习使用lambda表达式,几天前我开始变得整洁。我正在开发一个应用程序,它在C# 从列表中ID所在的集合中选择“全部”,c#,list,select,dapper,C#,List,Select,Dapper,我正在学习使用lambda表达式,几天前我开始变得整洁。我正在开发一个应用程序,它在列表视图中填充要为某些帐户维护选择的用户名。我在分类的一部分遇到了问题: 我使用一个简洁的查询获取一组对象,并将其分配给变量Global.allUsers 我有一个已经使用过的ID列表(list migrated),因此不需要出现在列表视图中 我通过以下方式获得所有用户的列表: var uniqUsers = Global.allUsers.OrderBy(n => n.lastNames).Group
列表视图
中填充要为某些帐户维护选择的用户名。我在分类的一部分遇到了问题:
- 我使用一个简洁的查询获取一组对象,并将其分配给变量
李>Global.allUsers
- 我有一个已经使用过的ID列表(
),因此不需要出现在list migrated
列表视图中
- 我通过以下方式获得所有用户的列表:
var uniqUsers = Global.allUsers.OrderBy(n => n.lastNames).GroupBy(q => q.salesIDs);
列表视图
,我需要在已迁移
中仅选择那些没有q.salesIDs
的用户。我只是不知道如果不使用某种foreach
,是否/如何做到这一点。似乎应该有办法选择它
当然,我还是在uniquser
中循环,并用每个对象属性中的值填充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不在migrated中
不会对其进行剪切。这就是您需要的:
var uniqUsers = allUsers.Where(x => migrated.Contains(x.salesIDs))
.OrderBy(y => y.lastNames)
.GroupBy(z => z.salesIDs).SelectMany(v => v).ToList();
获取
salesID
所在的所有用户,然后按lastNames
排序,然后按salesID
分组。SelectMany()
会将元素投射到一个序列中,而ToList()
会列举结果。直觉很强烈。与论坛网站不同,我们不使用“感谢”、“感谢任何帮助”或签名。请参阅“”和“”。谢谢,@DGibbs!我意识到,尽管我弄乱了我的示例。如果我希望迁移中的所有内容,您的示例就是这样显示的。我可以否定Where
子句吗?Where不包含?Nm。刚刚找到它。var uniquser=Global.alluser.Where(I=>!migrated.Contains(I.salesIDs)).OrderBy(n=>n.lastNames).GroupBy(q=>q.salesIDs);
谢谢!!!是的,你可以用!
操作符来否定这个条件。虽然你的op中的这一行有点让人困惑“我只需要选择那些迁移了q.salesIDs的用户”
,这表明了相反的结果。