Beim Erstellen von Service zur Anzeige OpenFileDialog
/SaveFileDialog
, ich dachte über die Erstellung von LINQ Abfrage/C# -Code zu Concatinate()
/Join()
Filterausdruck.FileDialog-Filter - LINQ-Konkation
den Filter kommen Sie mit diesem Aufruf basiert:
string res = "";
if(new Service().ShowOpenFileDialog(out res,
new string[]{ "JPG", "TXT", "FBX"},
new string[]{ "Images", "TextFile", "FilmBox"}))
Console.WriteLine(res); //DisplayResult
Beispiel Definition:
public bool ShowOpenFileDialog(out string result, string[] ext, string[] desc)
{
if(ext.Length != desc.Length) return false;
OpenFileDialog diag = new OpenFileDialog();
// problematic part
// diag.Filter = "Text File (*.txt)|*.txt";
// diag.Filter = desc[0] + " (*." + ext[0] + ")|*." + ext[0];
// diag.Filter += "|"+desc[1] + " (*." + ext[1] + ")|*." + ext[1];
// I tried something like:
// diag.Filter = String.Join("|", desc.Concat(" (*." + ext[0] + ")|*." + ext[0]));
// but not sure how to pass indexes across LINQ queries
diag.Filter = /* LINQ? */
if(diag.ShowDialog() == true)
{
result = diag.FileName;
return true;
}
return false;
}
Frage: Ist es möglich, LINQ zu erstellen verketten/beitreten 2-Arrays in einem solchen Format? Ist es erforderlich, es durch Code zu tun? Wenn ja, was ist die sauberste/günstigste Lösung?
Hinweis: Als Filter (Ergebnis) Beispiel:
"Images (*.JPG)|*.JPG |TextFile (*.TXT)|*.TXT |FilmBox (*.FBX)|*.FBX"
EDIT: Sehen Sie sich auch bitte könnte es n
Elemente in den Arrays.
Danke für die Antwort, aber wenn ich diese 1to1 in den Code setzen, ist Ausgabe: '(* .I) | * .m | (* .T) | * .e | (* .F) | * .i' – Tatranskymedved
Nicht sicher, was ich dachte, aber die aktualisierte Antwort sollte besser sein. –
In der Tat ist es, aber noch nicht klar Ergebnis. =), behoben über Bearbeiten. – Tatranskymedved