Zapytanie LINQ WHERE IN

Zapytanie LINQ WHERE IN
H2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 64
0

Witam. Mam problem z zapytaniem LINQ. Chcę przeczytać z zewnętrznego pliku konfiguracyjnego rozszerzenia plików, które mają być brane pod uwagę. Na przykład:
extensions = "jpg,bmp,tif"
Następnie rozbijam tego stringu po przecinku i otrzymuję tablicę stringów.
Jak zapytaniem LINQ wydobyć wszystkie te elementy? Chodzi mi o podobne działanie do pętli:

Kopiuj
foreach (string sourceFile in Directory.GetFiles(SourcePath, "*.*", SearchOption.AllDirectories).Where(s => s.EndsWith(".jpg") || s.EndsWith(".tif")))
{
}
grzesiek51114
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2442
1
Kopiuj
var exts = new List<string> { "jpg", "bmp", "tif" };

...Where(element => exts.Contains(element.Extension))... // gdzie Extension to własność klasy, której obiektem w lambdzie jest element
H2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 64
0

Ale ja nie mam żadnej klasy. Chcę po prostu wydobyć wszystkie elementy z tej tablicy.

grzesiek51114
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2442
3
Kopiuj
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _4p
{
    class Program
    {
        static void Main(string[] args)
        {
            var testPhrases = new List<string> { "hello.bmp", "kitty.exe", "silent.jpg", "fire.bmp", "s.x" };
            var wantedExtensions = new List<string> { ".bmp", ".jpg" };
            var minFileNameLength = 4;

            foreach (string phrase in testPhrases.Where(p => 
                p.Length >= minFileNameLength && 
                wantedExtensions.Contains(p.Substring(p.Length - minFileNameLength, minFileNameLength))))
            {
                Console.WriteLine(phrase);
            }
        }
    }
}

Przecież działa. Zrób tak samo tylko testową listę zamień na tablicę plików. Zaznaczyć należy, że nazwa pliku musi mieć co najmniej cztery znaki (kropka plus rozszerzenie, jeśli interesują nas trzyliterowe rozszerzenia).

H2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 64
0

Wszystko działało dobrze tylko miałem niedopatrzenie w pliku wejściowym. Zapomniałem o tej kropce. Dzięki za pomoc.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.