C# 如何获取IEnumerable SelectList的索引?

C# 如何获取IEnumerable SelectList的索引?,c#,C#,我想从ViewBag中获取索引,如果不可能,则从selectedlist中获取索引,但无法获取 ViewBag.Lst_Fetch_Record = new SelectList(list.OrderBy(ITEM_CD => ITEM_CD)); int index = ViewBag.Lst_Fetch_Record.IndexOf("I1"); 使用此方法: ViewBag.Lst_Fetch_Record.Select((item, index) =>

我想从ViewBag中获取索引,如果不可能,则从selectedlist中获取索引,但无法获取

ViewBag.Lst_Fetch_Record = new SelectList(list.OrderBy(ITEM_CD => ITEM_CD));
int index = ViewBag.Lst_Fetch_Record.IndexOf("I1");
使用此方法:

ViewBag.Lst_Fetch_Record.Select((item, index) => new 
{
       ...Your Code
}
使用此方法:

ViewBag.Lst_Fetch_Record.Select((item, index) => new 
{
       ...Your Code
}

检查此示例:

class Pet
{
    public string Name { get; set; }
    public int Age { get; set; }
}

public static void OrderByEx1()
{
    Pet[] pets = { new Pet { Name="Barley", Age=8 },
                   new Pet { Name="Boots", Age=4 },
                   new Pet { Name="Whiskers", Age=1 } };

    IEnumerable<Pet> query = pets.OrderBy(pet => pet.Age);

    foreach (Pet pet in query)
    {
        Console.WriteLine("{0} - {1}", pet.Name, pet.Age);
    }
}
class宠物
{
公共字符串名称{get;set;}
公共整数{get;set;}
}
公共静态无效OrderByEx1()
{
宠物[]宠物={新宠物{Name=“大麦”,年龄=8},
新宠物{Name=“Boots”,年龄=4},
新宠物{Name=“胡须”,年龄=1};
IEnumerable query=pets.OrderBy(pet=>pet.Age);
foreach(查询中的宠物)
{
Console.WriteLine(“{0}-{1}”,pet.Name,pet.Age);
}
}
资料来源:Microsoft文档


检查此示例:

class Pet
{
    public string Name { get; set; }
    public int Age { get; set; }
}

public static void OrderByEx1()
{
    Pet[] pets = { new Pet { Name="Barley", Age=8 },
                   new Pet { Name="Boots", Age=4 },
                   new Pet { Name="Whiskers", Age=1 } };

    IEnumerable<Pet> query = pets.OrderBy(pet => pet.Age);

    foreach (Pet pet in query)
    {
        Console.WriteLine("{0} - {1}", pet.Name, pet.Age);
    }
}
class宠物
{
公共字符串名称{get;set;}
公共整数{get;set;}
}
公共静态无效OrderByEx1()
{
宠物[]宠物={新宠物{Name=“大麦”,年龄=8},
新宠物{Name=“Boots”,年龄=4},
新宠物{Name=“胡须”,年龄=1};
IEnumerable query=pets.OrderBy(pet=>pet.Age);
foreach(查询中的宠物)
{
Console.WriteLine(“{0}-{1}”,pet.Name,pet.Age);
}
}
资料来源:Microsoft文档


这将为您提供一个带索引的有序列表

    List<string> selectListName = new List<String>();
    selectListName.Add("Ohio");
    selectListName.Add("Maine");
    selectListName.Add("Texas");
    selectListName.Add("Oregon");
    selectListName.Add("Alabama");

var result2  = selectListName.Select( (state, index) => new { index, state  
}).OrderBy(a=>a.state).ToList();        
    foreach(var b in result2)
{ 
  Console.WriteLine( b.index  + " " + b.state) ;
}

result:   If you re looking for the existing index
 4 Alabama
 1 Maine
 0 Ohio
 3 Oregon
 2 Texas

To use the result
Console.WriteLine(result2.FirstOrDefault(a=>a.state.Equals("Ohio")).index);
2
Console.WriteLine(result2.FirstOrDefault(a=>a.index.Equals(2)).state);
Ohio

这将为您提供一个带索引的有序列表

    List<string> selectListName = new List<String>();
    selectListName.Add("Ohio");
    selectListName.Add("Maine");
    selectListName.Add("Texas");
    selectListName.Add("Oregon");
    selectListName.Add("Alabama");

var result2  = selectListName.Select( (state, index) => new { index, state  
}).OrderBy(a=>a.state).ToList();        
    foreach(var b in result2)
{ 
  Console.WriteLine( b.index  + " " + b.state) ;
}

result:   If you re looking for the existing index
 4 Alabama
 1 Maine
 0 Ohio
 3 Oregon
 2 Texas

To use the result
Console.WriteLine(result2.FirstOrDefault(a=>a.state.Equals("Ohio")).index);
2
Console.WriteLine(result2.FirstOrDefault(a=>a.index.Equals(2)).state);
Ohio

不使用for循环获取索引

 var result2 = new SelectList(list.OrderBy(ITEM_CD=> ITEM_CD)).ToList();
 INT Index = result2.IndexOf(result2.Where(p => p.Text == a).FirstOrDefault());

不使用for循环获取索引

 var result2 = new SelectList(list.OrderBy(ITEM_CD=> ITEM_CD)).ToList();
 INT Index = result2.IndexOf(result2.Where(p => p.Text == a).FirstOrDefault());


无法理解你的代码,你想说什么。无法理解你的代码,你想说什么。我想要的是我传递的数据索引,不是所有的数据索引,没有外循环是可能的?你只想对列表的一部分排序?不,在shoritng之后,我想索引“I1”,它存储在新的SelectList(list.OrderBy)中(ITEM_CD=>ITEM_CD)“I1”是什么?问题不太清楚。I1是存储在ITEM_CD中的数据,就像在您的示例引导中一样。我想要数据的索引,我没有传递所有的数据索引,也没有外循环。您只想对列表的一部分排序吗?不,在shoritng之后,我想索引存储在新SelectList中的“I1”(list.OrderBy(ITEM_CD=>ITEM_CD))什么是“I1”?问题不太清楚..I1是存储在ITEM_CD中的数据,如示例引导中所示,但for循环无法找到任何值的索引?我编辑了答案。请参阅“使用结果”部分。您只需要result2.FirstOrDefault(a=>a.state.Equals(“俄亥俄”)).index以获取您的答案。在您的代码中,index中有错误。我不想显示所有数据,因此删除for循环,但在index中有错误。您只需要以下内容:var result2=selectListName.Select((state,index)=>new{index,state})。OrderBy(a=>a.state)。ToList();Console.WriteLine(result2.FirstOrDefault(a=>a.index.Equals(2)).state);是的,但是在这个索引错误中,因为索引中的索引没有声明,所以您可以告诉我声明为整数或任何其他值吗?没有for循环,无法找到任何值的索引?我编辑了答案。请参阅“使用结果”部分。您只需要result2.FirstOrDefault(a=>a.state.Equals(“俄亥俄”)).index以获取您的答案。在您的代码中,index中有错误。我不想显示所有数据,因此删除for循环,但在index中有错误。您只需要以下内容:var result2=selectListName.Select((state,index)=>new{index,state})。OrderBy(a=>a.state)。ToList();Console.WriteLine(result2.FirstOrDefault(a=>a.index.Equals(2)).state);是的,但在索引中出现此错误,因为索引中没有声明,所以您能告诉我声明为整数或任何其他吗?