2
虽然创建服务来显示OpenFileDialog
/SaveFileDialog
,我想创建LINQ查询/清除C#代码为Concatinate()
/Join()
过滤器表达式。FileDialog过滤器 - LINQ concatination
做基于此调用过滤器:
string res = "";
if(new Service().ShowOpenFileDialog(out res,
new string[]{ "JPG", "TXT", "FBX"},
new string[]{ "Images", "TextFile", "FilmBox"}))
Console.WriteLine(res); //DisplayResult
示例定义:
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;
}
问:是否有可能创建LINQ来连接/在这样的格式加入2个阵列?是否需要通过代码来完成?如果是这样,什么是最干净/最便宜的解决方案?
注:作为一个过滤器(结果)例如:
"Images (*.JPG)|*.JPG |TextFile (*.TXT)|*.TXT |FilmBox (*.FBX)|*.FBX"
编辑:也请考虑有可能是在阵列n
项目。
感谢您的回答,但是如果我把这个1to1放在代码中,输出是:'(* .I)| * .m | (* .T)| * .E | (* .F)| * .i' – Tatranskymedved
不知道我在想什么,但更新的答案应该会更好。 –
确实是,但尚不清楚的结果呢。 =),通过编辑修复。 – Tatranskymedved