IndexOf有多个值? C#

时间:2018-05-15 06:58:51

标签: c# uwp

所以我有一个名为Attributes的列表填充了RoomId,介于1-25之间 无论如何使用IndexOf来调用多个值?

attributes.IndexOf(new Attributes { RoomID = 1 });

所以这样的事情会很棒

 attributes.IndexOf(new Attributes { RoomID = 1-25});

3 个答案:

答案 0 :(得分:4)

你可以简单地使用linq - 使用接受Func<TSource, Int32, TResult>的{​​{3}}重载:

 var indexes = attributes
     .Select((a, i) => return new {Element = a, Index = i})
     .Where(ei => ei.Element.RoomId >= 1 && ei.Element.RoomId <= 25)
     .Select(ei => ei.Index);

这将返回IEnumerable<int>,其中包含RoomId值介于1和25之间的所有属性索引。

答案 1 :(得分:0)

我建议使用FindAll这样的谓词;

假设您的列表包含称为Room的对象,并且每个对象都有RoomId

List<Room> foundRooms = attributes.FindAll(delegate (Room obj) { return obj.RoomId >= 1 && obj.RoomId <= 25; });

答案 2 :(得分:0)

使用FindIndex(predicate)代替IndexOf(item)

 var a = new List<int>{1,2,3,4};
 Console.WriteLine(a.FindIndex(item => item == 3));  // 2
 Console.WriteLine(a.FindIndex(item => item == -1)); // -1