回答
有几种方法,你可以做到这一点。 for循环,而不是
- 使用一组布尔标志
- 使用LINQ获得list.First(),然后在的foreach list.Skip(1)
事情是这样的:
bool first = true;
foreach(var item in items)
{
if (first)
{
item.firstStuff();
first = false;
}
item.otherStuff();
}
bool first = true;
foreach(var foo in bar)
{
if (first)
{
// do something to your first item
first = false;
}
// do something else to the rest
}
想不出任何东西,但
var processedFirst = false;
foreach(var x in items) {
if(!processedFirst) {
ProcessFirst(x);
processedFirst = true;
}
这里是一个高性能的解决方案:
using (var erator = enumerable.GetEnumerator())
{
if (erator.MoveNext())
{
DoActionOnFirst(erator.Current);
while (erator.MoveNext())
DoActionOnOther(erator.Current);
}
}
编辑:这里是一个LINQ一个:
if (enumerable.Any())
{
DoActionOnFirst(enumerable.First());
foreach (var item in enumerable.Skip(1))
DoActionOnOther(item);
}
编辑:如果对项目的操作有签名分配给Func<TItem, TResult>
,你可以这样做:
enumerable.Select((item, index) => index == 0 ? GetResultFromFirstItem(item) : GetResultFromOtherItem(item));
试试这个
bool IsFirst = true;
foreach(DataRow dr in dt.Rows)
{
if (IsFirst)
{
// do some thing
IsFirst = false;
}
}
这是获取索引以及数组中每个对象的一般解决方案。应该测试它是否是第一个。
List<String> entries = new List<string>();
entries.Add("zero");
entries.Add("one");
entries.Add("two");
Dictionary<int, String> numberedEntries = new Dictionary<int, string>();
int i = 0;
entries.ForEach(x => numberedEntries.Add(i++, x));
foreach (KeyValuePair<int, String> pair in numberedEntries) {
Console.WriteLine(pair.Key + ": " + pair.Value);
}
在这种设置中,KeyValuePair的关键是指数和值是索引处的对象,在我的例子一个字符串,但任何对象可以放在那里。它增加了一些开销,但可以用来在需要时确定列表索引中的任何对象。
闻起来像Python的字典。__items__ 我喜欢它! – Hovis 2012-03-06 23:22:39
我喜欢LINQ的方式,但没有跳过(1),这样一来,你也可以在列表中使用它的最后一个项目,你的代码保持干净恕我直言:)
foreach(var item in items)
{
if (items.First()==item)
item.firstStuff();
else if (items.Last() == item)
item.lastStuff();
item.otherStuff();
}
我不喜欢这种方法,因为它不严格准确。例如,如果物品不止一次出现,并且也是第一个或最后一个物品,那么您将不止一次触发第一个或最后一个条件。或者如果有些物品是平等的,他们也可以多次解雇。 – 2015-12-25 06:23:00
@Sahuagin问题是关于测试项目是否是第一个。如果你清除了其他部分,这意味着你正在测试项目是否仅仅是第一项,你的合理关注将得到缓解。 – ErTR 2016-06-21 07:30:30
- 1. 如何检查元素是否为U的一个实例?
- 2. 检查一个json foreach循环内是否存在字符串
- 3. 如何检查一个属性是否在一个元素中?
- 4. 检查一个元素是否存在
- 5. NHibernate的:如何检查是否一个实体是持续
- 6. 检查元素是否是选中的最后一个元素
- 7. 如何检查一个元素是否是另一个元素的有效子元素/父元素
- 8. Foreach通过2个数组只循环第一个元素
- 9. jQuery:如何检查元素是否是最后一个兄弟?
- 10. 如何检查HTML元素是否是一个结束节点?
- 11. 如何检查元素是否也是另一个列表
- 12. 如何检查它是否是最后一个元素
- 13. 检查第一个元素
- 14. php - 如何检查第一个数组中是否存在第一个数组中的至少一个元素
- 15. 为什么我的循环只检查第一个元素?
- 16. 检查一个循环是否返回一个值
- 17. 检查foreach循环包含一个值
- 18. foreach循环停止的第一个XML元素
- 19. while循环中的第一个元素?
- 20. 检查数组的第一个元素需要是唯一的
- 21. 如何检查是否一个元素标签是结束元素
- 22. 检查输入是否是一个循环中的字符串
- 23. 如何检查ArrayList是否包含另一个ArrayList的元素?
- 24. 如何检查是否一个JavaScript的布尔元素存在
- 25. 检查元素是否包含jQuery中的另一个元素
- 26. Foreach循环中List <>中的第一个或最后一个元素
- 27. 在jQuery中,如何测试一个元素是否是同一类的多个元素中的第一个?
- 28. Foreach元素 - 只是第一个元素工作
- 29. 检查一个结构中是否存在一个元素C
- 30. 检查一个数组的第一个元素是否是C中的一个数字
GRR,还不快足够!没有看到geofftnz的帖子。 – Hamza 2010-08-24 03:25:07
这是StackOverflow获得专利的易问题竞赛:) – geofftnz 2010-08-24 03:32:51
发挥良好的先生,恭喜:) – Hamza 2010-08-24 03:36:17