从列表中的列表中填充组合框
本文关键字:列表 组合 填充 | 更新日期: 2023-09-27 18:19:11
我试图在。net 3.5 SP1中为自定义对象列表添加过滤器。我的对象是这样的:
public class Message {
string Filename;
DateTime Timestamp;
List<ClassA> A;
List<ClassB> B;
// ...
}
public class ClassA {
string Name;
// ...
}
public class ClassB {
string Description;
// ...
}
我有一个ObservableCollection保存我所有的消息;每个消息有2个或更多的ClassA和0到n个ClassB。我已经设置了一个ListView来显示消息(通过CollectionViewSource排序)。
现在我想添加两个组合框到我的UI允许过滤这个ListView。当然,它们不应该包含重复的,所以我只想要不同的ClassA。姓名和类别。当前显示在ListView中的所有消息的描述。我还想让一个组合框的过滤器也适用于另一个。
ListView的过滤已经完成并且正在工作,但是我不知道如何填充组合框
这应该可以工作,其中Messages是您过滤的消息集合:
var distinctNames =
(from message in Messages
from a in message.A
select a.Name).Distinct();
var distinctDescriptions =
(from message in Messages
from b in message.B
select b.Description).Distinct();
如果我理解正确的话,您希望根据类型A
和类型B
的成员集合的属性的string
值来过滤List<Messages>
集合。
如果是这样,像这样的东西应该工作你:
var msgs = messagies.Select(ms=>ms).Where(ms=>ms.A.Exists(cla=>cla.Name.StartsWith("NameToSearch") &&
ms.B.Exists(clb=>clb.Description.StartsWith("DescriptionToSearch"))));
注意,这里我把和运算符放在查询和StartsWith
字符串函数中。你可以用更适合你需要的函数和操作符来代替它们。
好的一点是使它们也不区分大小写,在这种情况下使用,例如
StartsWith("DescriptionToSearch",StringComparison.InvariantCultureIgnoreCase))