c# - ArrayList 过滤逻辑

标签 c# asp.net

我有一个 class Operation.Operation 的数组列表 arrTotalItems

该类有两个属性,一个是IDname。 现在我有其他 arraylist arrSelectedItems,其中包含 operations

的 ID

现在我必须将两个 DataList 绑定(bind)到 operation 的名称。

第一个 DataList 将绑定(bind)到选定的 arraylist

其他 DataList 将绑定(bind)到 arrTotalItems - arrSelectedItems,即那些不在 arrSelectedItems 中的操作。

无法找到如何绑定(bind)两个列表的逻辑

最佳答案

如果您使用的是 .NET Framework 3.5 或更高版本,LINQ允许您从存储在 arrSelectedItems 中的 ID 进行投影操作与 Select() , 然后使用 Except()计算 arrTotalItems 之间的交集这个投影:

IEnumerable<Operation> totalOps = arrTotalItems.Cast<Operation>();
yourDataList.DataSource = totalOps.Except(arrSelectedItems.Cast<string>().Select(
    id => totalOps.Where(op => op.ID == id).FirstOrDefault()));

请注意,您首先必须申请 Cast<T>() 给你的ArrayLists为了获得 IEnumerable<T> 的实例可以与 LINQ 方法一起使用。

关于c# - ArrayList 过滤逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13899519/

相关文章:

c# - 实体使用 webapi 返回的空数据

c# - Paypal IPN delay-is sleeping 站点解决方案

c# - 从 WSDL 文件读取 minOccurs 和默认值

c# - 如果变量不是 boolean 值则返回 False

c# - 我想从 MySQL 数据库中检索去年的记录,但它正在从数据库中检索所有数据

c# - DropDownlistFor MVC 4 中的 Optgroup?

c# - 看看 Regex 对象是用什么模式创建的?

c# - 更新 .NET Web 服务以使用 TLS 1.2

c# - DotNetOpenAuth OpenID 提供商 "Sequence contains more than one element"

c# - onclick 方法在 Blazor 服务器端 Razor 组件中不起作用