我有一個列表/數組,並且需要處理某些元素,但也需要處理中的元素索引。 例子:LINQ/C#:Where&Foreach在列表/數組中使用索引
List Names = john, mary, john, bob, simon Names.Where(s => s != "mary").Foreach(MyObject.setInfo(s.index, "blah")
但不能使用「指數」與財產清單,如果成反比的名字是在一個陣列,我不能使用的foreach ... 有什麼建議?
我有一個列表/數組,並且需要處理某些元素,但也需要處理中的元素索引。 例子:LINQ/C#:Where&Foreach在列表/數組中使用索引
List Names = john, mary, john, bob, simon Names.Where(s => s != "mary").Foreach(MyObject.setInfo(s.index, "blah")
但不能使用「指數」與財產清單,如果成反比的名字是在一個陣列,我不能使用的foreach ... 有什麼建議?
你應該用一個簡單的循環for
,像這樣:
var someNames = Names.Where(s => s != "mary").ToArray();
for (int i = 0; i < someNames.Length; i++)
someNames.setInfo(i, "blah");
LINQ是不是BE-全部結束時,所有的基本循環和。
如果你真的想使用LINQ,你需要調用Select
:
Names.Where(s => s != "mary").Select((s, i) => new { Index = i, Name = s })
如果你打算推薦一個for循環,那麼我建議你把for循環中的條件,而不是先使用Linq,然後遍歷數組。 – 2013-08-18 16:08:33
是的,有沒有使用循環的方式。
你只需要.ToList()
您.Where()
條款
Names.Where(s => s != "mary").ToList().Foreach(MyObject.setInfo(s.index, "blah");
的foreach從集合中的每個元素執行。 價:https://msdn.microsoft.com/en-us/library/bwabdf9z(v=vs.110).aspx
下面是您的情況下,示例代碼
List<string> Names = new List<string> { "john", "mary", "john", "bob", "simon" };
int index = 0;
Names.Where(s => s != "mary").ToList().ForEach(x => printItem(index++,x));
printItem方法
public static void printItem(int index, string name){
Console.WriteLine("Index = {0}, Name is {1}",index,name);
}
輸出:
索引= 0,名字是約翰
指數= 1,名字是約翰
指數= 2,名稱是Bob
指數= 3,名稱是西蒙
你想過濾的一整套原始集合中的指數或指數? – SLaks 2010-06-06 11:50:03
[C#foreach with index]的可能重複(http://stackoverflow.com/questions/521687/c-sharp-foreach-with-index) – Xian 2012-02-09 22:45:36