Jika string (atau bagian dari string) dari list1 sama dengan string di list2 string perlu ditambahkan ke listbox.

Saya sekarang memiliki:

            int g = 0;

            while (g < musthaves.Count())
            {
                if (list1.Contains(list2[g].ToString()))
                {
                    listBox14.Items.Add("Found: " + list2[g].ToString());
                }
                else
                {
                    listBox14.Items.Add("Not found: " + list2[g].ToString());
                }
                g++;
            }

Daftarnya adalah:

Daftar1:
dokumen pindaian testcase
dokumen unggah testcase
dokumen hapus testcase

Daftar2:
unggah dokumen
memindai dokumen
menunjukkan ketidakkonsistenan


Jadi kotak daftar harus berisi:

Ditemukan: unggah dokumen
Ditemukan: pindai dokumen
Tidak ditemukan: tunjukkan inkonsistensi

Tetapi hasil saya Tidak ditemukan untuk setiap string.

Bantuan apa pun dihargai.

-2
Richard 8 Januari 2021, 02:16

3 jawaban

Jawaban Terbaik

Anda hanya memeriksa bahwa string lengkap adalah salah satu item dalam daftar lain, tetapi persyaratan Anda adalah

Jika string (atau bagian dari string) dari list1 sama dengan string di list2

Jadi, Anda perlu memeriksa setiap frasa di list2 jika frasa berisi salah satu frasa yang diharapkan dari list1 (uhh, saya sarankan untuk menggunakan nama yang lebih deskriptif untuk variabel - akan mempermudah percakapan :))

foreach (var requiredPhrase in list1)
{
    if (list2.Any(phrase => phrase.Contains(requiredPhrase))
    {
        // Found
    }
    else
    {
        // Not found
    }
}
0
Fabio 7 Januari 2021, 23:38

Tetapi hasil saya Tidak ditemukan untuk setiap string.

Karena List.Contains memeriksa kecocokan yang tepat dari item tersebut. Misalnya. Anda memeriksa apakah ada string "upload document" di list1, dan itu tidak benar.

Yang Anda butuhkan adalah Enumerable.Any untuk memeriksa apakah ada elemen dalam urutan yang cocok dengan kondisi. Dan String.Contains untuk memeriksa apakah string dari daftar kedua adalah substring dari string dari list1:

if (list1.Any(l1 => l1.Contains(list2[g])))
1
Sergey Berezovskiy 7 Januari 2021, 23:24

Berikut ini akan membantu Anda.

list2.Where(x=>list1.Any(c=>c.Contains(x)));

Kueri di atas akan mengulangi setiap elemen di list2 dan mengambil elemen yang merupakan substring dari item mana pun di list1

0
Anu Viswan 7 Januari 2021, 23:32