【问题标题】:Finding a specfic int in a List在 List 中查找特定的 int
【发布时间】:2014-01-02 07:23:59
【问题描述】:

我有一个从类创建的列表:

class Vara
{
    public int streckKod { get; set; }
    public string artNamn { get; set; }
}

列表如下所示:

List<Vara> minaVaror = new List<Vara>();

我用这一行添加到列表中:

minaVaror.Add(new Vara() {streckKod = inputBox1, artNamn = textBox2.Text });

但我坚持的是如何在列表中找到特定的 int。假设我正在列表中搜索包含变量 streckKod 中数字 293 的项目。

我尝试过使用 .IndexOf 函数,但我没有让它正常工作。

也可以获取具体编号所在的货号吗?

【问题讨论】:

    标签: c# list class int indexof


    【解决方案1】:

    如果您想查找所有 streckKod 值为 293 的项目,请使用 Where

    var items = minaVaror.Where(i => i.streckKod == 293);
    

    如果只对第一项感兴趣,请使用FirstOrDefault -

    var item = minaVaror.FirstOrDefault(i => i.streckKod == 293);
    

    FirstOrDefaultreturn null in case no item exist in collection 的值为 293。

    确保在你的类中添加命名空间System.Linq 以使用这些LINQ extension methods

    【讨论】:

    • 如果您不想使用 Linq,则必须使用 for (int i = 0; i
    • 再问一个问题,现在可以将此位置从 var item 转换为 int 吗? :)
    • 是的,使用 - int index = (item == null)? -1 : minaVaror.IndexOf(item).
    • 如果 item 为 null,则应该为 -1,表示它不存在于列表中。希望对您有所帮助。
    • 非常感谢!对此,我真的非常感激! :)
    【解决方案2】:

    使用 Linq

    minaVarror.Find(item=>item.strekKod == 293);
    

    【讨论】:

      【解决方案3】:

      添加到 Rohit Vats 答案...

      找到您的项目后,使用WhereFirstOrDefault,您可以通过以下方式获取索引:

      var item = minaVaror.FirstOrDefault(i => i.streckKod == 293);
      
      // Get index of Vara (item) with streckKod = 293
      int index = minaVaror.IndexOf(item);
      

      由于IndexOf 返回列表minaVaror 中的确切项目(Vara)的位置

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-06-29
        • 2022-01-02
        • 2012-03-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-28
        相关资源
        最近更新 更多