使用Linq,我如何获得序数列表在5到27之间的对象列表。
MyObject有一个未知个数,所以有些东西都找不到。
“allItems”始终按顺序排列,因此需要按顺序排列。
像这样:
List<MyObject> allItems = GetAllItems();
List<MyObject> myRange = allItems.LINQSTATEMENTHERE(5 to 27th items);
答案 0 :(得分:9)
使用Skip()和Take()的组合:
int from = 5;
int to = 27;
var myRange = allItems.Skip(from - 1).Take(to - from);
答案 1 :(得分:1)
由于您需要立即执行(您希望将结果加载到列表中),因此无需在此处使用LINQ;您可以在List<T>
上使用实例GetRange
方法:
List<MyObject> myRange = allItems.GetRange(from, to - from + 1);
当然,如果您想要延迟执行,或者您希望该技术应用于其他类型的序列,请使用Justin Niessner的技术。他的技术的一个好处是,如果用于表示范围的元素太少,它就不会爆炸。