如何在Observable Collection中搜索项目并获取其索引

use*_*387 5 .net c# struct observablecollection

 public struct PLU { 
         public int ID { get; set; } 
         public string name { get; set; } 
         public double price { get; set; } 
         public int quantity {get;set;}

 }
 public static ObservableCollection<PLU> PLUList = new ObservableCollection<PLU>();
Run Code Online (Sandbox Code Playgroud)

我有如上所述的ObservableCollection.现在我想在PLUList中搜索ID 并得到它的索引:

int index = PLUList.indexOf();
if (index > -1) {
// Do something here
}
else {
// Do sth else here..
}
Run Code Online (Sandbox Code Playgroud)

什么是快速解决方案?

编辑:

我们假设有些项目被添加到PLUList,我想添加另一个新项目.但在添加之前,我想检查列表中是否已存在ID.如果确实如此,我想在数量上加+1.

Mit*_*dir 16

使用LINQ :-)

var q =  PLUList.Where(X => X.ID == 13).FirstOrDefault();
if(q != null) 
{
   // do stuff
}
else 
{
   // do other stuff
}
Run Code Online (Sandbox Code Playgroud)

如果你想保持结构,请使用它:

var q =  PLUList.IndexOf( PLUList.Where(X => X.ID == 13).FirstOrDefault() );
if(q > -1) 
{
   // do stuff
}
else 
{
   // do other stuff
}
Run Code Online (Sandbox Code Playgroud)