暇つぶし2chat TECH - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト700:デフォルトの名無しさん (ワッチョイ 8b7b-eq+O) 17/02/20 03:33:55.65 Cim83SJm0.net 無理矢理Linqで書くならこんな感じだろうか public static IEnumerable<int> WhereIndex<T>(this IEnumerable<T> source, Func<T, bool> predicate) { return source.Select((value, index) => new { Index = index, Value = value }) .Where(x => predicate(x.Value)).Select(x => x.Index); } 値が0以上限定ならこんな風にも書ける public static IEnumerable<int> WhereIndex<T>(this IEnumerable<T> source, Func<T, bool> predicate) { return source.Select((value, index) => predicate(value) ? index : -1) .Where(x => x >= 0); } 701:デフォルトの名無しさん (ワッチョイ 8b7b-eq+O) 17/02/20 04:12:20.09 Cim83SJm0.net >>686 IndexCollectionの後に<Type>が抜けてるね。あと引数のthisも抜けてる Linqに慣れてないなら、最初から繋げていかないで一個ずつ結果を見た方がいいよ var a = num.Where(_ => _ > 12); var b = a.Select((value, index) => index); ここではaが {13, 14, 15 } ってリストになる(Whereは条件式でフィルタした新しい配列を作る) bはその配列をインデックスの値に変換した新しいリストを返すから値は { 0, 1, 2 } となる あと勘違いしてたけどインデックスは当然0以上なので>>688の後者の書き方で問題なかった 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch