【问题标题】:Catch items from list which contain specifc string c#从包含特定字符串 c# 的列表中捕获项目
【发布时间】:2021-01-12 20:25:49
【问题描述】:

假设我有一个不断更新的列表框,其中包含例如:

Apple Juice -- 18 EURO
Orange Juice -- 14 EURO
Juice Berry -- 12 EURO
Juice Dates-- 56 EURO

我有一个文本框,我会在其中写下这个词:


Apple
Dates

我想要的输出是:

Apple Juice -- 18 EURO
Juice Dates -- 56 EURO

为了消除混淆,我正在尝试构建一个过滤器,其中有很多果汁类型,并通过输入有利的果汁类型,它会从大列表中搜索果汁类型并过滤它们并将它们显示为独立的有利果汁类型列表

到目前为止我已经尝试过:

MyClass result = list.Find(x => x.Id == "Apple"); 

【问题讨论】:

  • 这个id 来自哪里?你有模特吗?一类Juice 可能吗?你如何填充ListBox?通过.DataSource?、.Items.Add(...)?你应该澄清所有这些。

标签: c# arrays listbox items


【解决方案1】:

winforms 中的文本框有一个Lines 属性,返回一个字符串数组。使用它,你可以过滤

string[] terms = myTextBox.Lines;
var result = list.Find(x => terms.Contains(x.Id));

var result = list.Find(x => Array.FindIndex(terms, t => t == x.Id) != -1);

Find 仅返回找到的第一项。您可以使用FindAll 返回包含所有匹配项的列表。

【讨论】:

  • @oliverjacot-descombes .id 找不到:(
  • Id (大写的“I”应该是MyClass 类的属性。根据您的代码示例,我假设您有一个List<MyClass> list。@ 怎么样? 987654329@ 声明?你是这样命名你的ListBox 的吗?如果是,你在ListBox 中添加了什么以及如何添加?你添加或绑定了某种类型的对象,你添加了字符串吗?我们没有足够的信息回答您的问题。另请参阅@dr.null 的评论。我们需要查看您的真实代码。
猜你喜欢
  • 1970-01-01
  • 2017-01-28
  • 2017-08-02
  • 1970-01-01
  • 1970-01-01
  • 2017-12-07
  • 1970-01-01
  • 1970-01-01
  • 2019-10-22
相关资源
最近更新 更多