参照リンクを経由してください移動するための方法です。
using System;
using System.Linq;
using System.IO;
public class Program
{
public static void Main()
{
// some strings that are like paths
var dirs = new[]
{
@"C:\temp\image\a.jpg", @"C:\temp\image\b.bmp", @"c:\temp\bin\my.exe",
@"c:\temp\document\resume.doc", @"c:\temp\document\timetable.xlsx"
};
// this will use a static method to extract only the path-part
var fullDirs = dirs.Select(d => Path.GetDirectoryName(d)).ToList();
// this will use the same method but split the result at the default systems
// path-seperator char and use only the last part, only uses distinct values
var lastDirsDistinct = dirs.Select(d => Path.GetDirectoryName(d)
.Split(Path.DirectorySeparatorChar).Last()
).Distinct().ToList();
// joins the list with linebreaks and outputs it
Console.WriteLine(string.Join("\n", fullDirs));
// joins the list with linebreaks and outputs it
Console.WriteLine(string.Join("\n", lastDirsDistinct));
}
}
出力:
あなたが
ないを照会するための実際のファイルシステムを持っていますが、
のようなパスは、あなたがこのようにそれらを分割する
System.IO.Path - Static methodsを使用することができます文字列のリストを持っている場合は
C:\temp\image
C:\temp\image
c:\temp\bin
c:\temp\document
c:\temp\document
image
bin
document
ループ文を使用しないでください:宿題の一般的な制限はありますか?私の推測では、あなたは "本当の"ファイルシステムを持っていないだろうが、上記のような文字列の "検定"リストを持っているだろうか?その前提の上で文字列を処理するための私の答えに合わせました。 Linqのカウントを "ループステートメント"としてチェックインすることはできません。そうであれば、foreach、for、while、do-while、またはあなたの使用が許可されているものでそれを書き換えることができます –