- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 VB.Net 中有窗口应用程序。我有以下类(class)和枚举。
Public Class Page
Public Property Name As String
Public Property PageItems As List(Of PageItem)
End Class
Public Class PageItem
Public Property ItemName As String
Public Property mode As Mode
End Class
Public Enum Mode
Mode1
Mode2
End Enum
在我的应用程序中,我有一个 List(Of Page)
属性。一个 Page
可以有多个 PageItem
并且 PageItem.ItemName
可以用不同的模式复制。例如应用程序可以有一个带有 Mode1
和 Mode2
的 PageItem
(这里 Mode1
项可能在 Page 中(0)
和 Mode2
项目可能在 Page(1)
)
我的问题是如何找到同时具有 Mode1
和
?List
(相同的 ItemName
)使用 LINQ 从 List(Of Page)
属性获取 code>Mode2
例子:
Page 1 has 3 Items {Item1, Mode1}, {Item2,Mode1}, {Item3,Mode2}
Page 2 has 2 Items {Item1, Mode2}, {Item4, Mode1}
这里我想要一个 PageItems
列表,它同时具有模式 Mode1
和 Mode2
。在上面的例子中,结果应该是 {Item1, Mode1}, {Item1, Mode2}
(Item1
有两个 Modes
)
最佳答案
因为您需要“PageItems 组”,所以我采用了这种方法:
From p In pages From pi In p.PageItems _
Group By pi.ItemName Into Group _
Where (New Mode(){Mode.Mode1, Mode.Mode2}).All(Function(m) _
(From pig In Group Where pig.pi.Mode = m).Any) _
Select ItemName, PageItems=(From pig In Group Select pig.pi)
注意最后的 Select
减少了可用信息。如果你删除它,你也会得到每个组的页面。
为了测试这一点,我使用了您的数据集,除了我有 Item3
和 Mode2
(而不是向枚举添加新的 Mode3
)现在为了在评论中测试你的问题的答案,我将 Item4
更改为 Item3
,以便为我的上述答案返回两组。
“仅获取一个 List(Of PageItems)
”的答案只是对最后一行 Select
的更改:
From p In pages From pi In p.PageItems _
Group By pi.ItemName Into Group _
Where (New Mode(){Mode.Mode1, Mode.Mode2}).All(Function(m) _
(From pig In Group Where pig.pi.Mode = m).Any) _
From pig In Group Select pig.pi
关于vb.net - 使用 LINQ 从 List(of ParentObject) 中查找重复的子项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12421690/
object.create(parentObject) 与仅将父对象分配给子对象有什么区别,如下所示: var child = Object.create(parent); var child2 =
引用Sam Elsamman's post ,我想问一下您是否编写了一个函数来为 Object.create() 提供预期的行为? var animal = {traits: {}};
要跟踪 Page 类的修订,我有一个 PageRevision 类,它继承自 Page 并添加了修订 ID( Guid RevisionID;). 如果可能,我应该如何将现有的 Page 对象转换为
我在 VB.Net 中有窗口应用程序。我有以下类(class)和枚举。 Public Class Page Public Property Name As String Public
我是一名优秀的程序员,十分优秀!