【问题标题】:Search for word and get whole string搜索单词并获取整个字符串
【发布时间】:2021-02-20 15:45:05
【问题描述】:

我有一个如下所示的列表框:

DANAHER -- 190,00 € -- 20 PCS -- 12:51:52.361
DANAHER -- 190,00 € -- 270 PCS -- 12:51:57.361
RENAULT -- 37,815 € -- 23 PCS -- 12:51:52.475
RENAULT -- 37,815 € -- 1 PCS -- 12:51:59.475
CAMECO -- 13,854 € -- 20 PCS -- 12:53:13.028
CAMECO -- 13,854 € -- 29 PCS -- 12:53:53.028
SAPSE -- 105,48 € -- 20 PCS -- 12:53:22.631
SAPSE -- 105,48 € -- 80 PCS -- 12:53:27.631

当然,现在每秒钟就有新公司不断地添加到列表框中。 我想创建一个文本框,我可以在其中输入公司名称并搜索我的列表框 如果存在条目,如果存在,则应该获取字符串的其余部分并将其保存在某处

我的文本框示例

DANAHER RENAULT

所需的输出应为:

DANAHER -- 190,00 € -- 20 PCS -- 12:51:52.361
DANAHER -- 190,00 € -- 270 PCS -- 12:51:57.361
RENAULT -- 37,815 € -- 23 PCS -- 12:51:52.475
RENAULT -- 37,815 € -- 1 PCS -- 12:51:59.475

到目前为止我所尝试的:

   string[] words = richTextBox2.Text.Split(' ');


                var toCheck = words;

               

                var newList = listwithentrys.Where(x => toCheck.Any(check => x.Contains(check)));
                List<String> selectedCollection = newList.ToList();
                listBox4.DataSource = selectedCollection;

但似乎无缘无故无法正常工作。

【问题讨论】:

  • listwithentrys 是 LisBox 对象吗?是吗,listwithentrys.Items.Cast&lt;string&gt;().Where(x =&gt; toCheck.Any(check =&gt; x.Contains(check))) 应该可以工作。
  • “它似乎无法正常工作”并不是对问题的明确定义。你能解释一下结果是怎么错的吗?
  • @WiktorStribiżew 是的,先生,这是主要名单
  • 抱歉,不知道您所说的“主列表”是什么意思。看我编辑的置顶评论,需要从列表框中获取字符串列表,然后可以用Where查询。
  • @WiktorStribiżew 当我使用此代码时,当我有一家名为 SAP 的公司和另一家名为 BAMSAP 的公司时,我的结果会以某种方式被操纵,它会同时输出两者

标签: c# arrays string list


【解决方案1】:

由于listwithentrys是一个ListBox对象,所以需要先获取行。

然后,您需要检查行 开头的行是否是来自 words 数组的确切字符串。由于它们后面都有一个空格,因此您可以简单地检查该行是否以单词+空格开头。

var newList = listwithentrys.Items
    .Cast<string>()
    .Where(x => 
        toCheck.Any(check => x.Trim().StartsWith($"{check} "))
    )

【讨论】:

    猜你喜欢
    • 2021-03-31
    • 2013-09-15
    • 2016-11-15
    • 2013-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多