■仕様の背景
URLリスト(コードのurlList)を使ってダウンロードを行う、
すでにダウンロード済みのファイル名は
1行づつファイルに書き込まれて保存されている(コードのdownLoadedListと同一)
■メソッドでやりたい事
すでにダウンロード済みのファイルはダウンロードする必要がないため
URLリストから削除する。
つまりURL内に必ずファイル名が含まれているため部分一致検索し、
そのインデックスの要素をURLリストから削除する。
■質問とコード
下記コードでリストに対して部分一致した場合、
インデックスを取得してそのインデックスのデータを削除するというコードを書いたのですが
冗長なのではないかと考えており質問しました。
C#
1// 中身は https:// + ファイル名 + シグネチャ 2List<string> urlList = URLのリスト; 3int loopcnt = urlList.Count; 4 5// 中身は ダウンロード済みのファイル名 6List<string> downLoadedList = ファイル名リスト 7int downLoadCount = downLoadedList.Count; 8 9for (int i = 0; i < loopcnt; i++) 10{ 11 for(int j = 0; j < downLoadCount;j++) 12 { 13 // 部分一致したか? 14 if(urlList.Contains(downLoadedList[j]) == true) 15 { 16 // 部分一致したインデックスを取得 17 var foundIndex = urlList.Select((item, index) => new { Index = index, Value = item }) 18 .Where(item => item.Value.IndexOf(downLoadedList[j]) >= 0) 19 .Select(item => item.Index); 20 // 指定インデックスのURLを削除 21 urlList.RemoveAt(foundIndex.ToArray()[0]); 22 } 23 } 24}
■開発環境
Unity5.4.0f3(C#4.0)
Windows7
.NetFrameWork3.5
回答3件
あなたの回答
tips
プレビュー