Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从列表中ID所在的集合中选择“全部”_C#_List_Select_Dapper - Fatal编程技术网

C# 从列表中ID所在的集合中选择“全部”

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

我正在学习使用lambda表达式,几天前我开始变得整洁。我正在开发一个应用程序,它在
列表视图
中填充要为某些帐户维护选择的用户名。我在分类的一部分遇到了问题:

  • 我使用一个简洁的查询获取一组对象,并将其分配给变量
    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的用户”
,这表明了相反的结果。