回答
有几种方法,你可以做到这一点。 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. 检查一个元素是否存在
- 2. NHibernate的:如何检查是否一个实体是持续
- 3. 如何检查一个元素是否是另一个元素的有效子元素/父元素
- 4. Foreach通过2个数组只循环第一个元素
- 5. 检查第一个元素
- 6. 为什么我的循环只检查第一个元素?
- 7. jQuery:如何检查元素是否是最后一个兄弟?
- 8. 如何检查它是否是最后一个元素
- 9. foreach循环停止的第一个XML元素
- 10. 检查foreach循环包含一个值
- 11. 检查一个循环是否返回一个值
- 12. while循环中的第一个元素?
- 13. 检查数组的第一个元素需要是唯一的
- 14. 检查输入是否是一个循环中的字符串
- 15. 如何检查是否一个元素标签是结束元素
- 16. 如何检查是否一个JavaScript的布尔元素存在
- 17. 在jQuery中,如何测试一个元素是否是同一类的多个元素中的第一个?
- 18. 检查元素是否只有一个子元素
- 19. 我如何检查一个元素在php中是否可见?
- 20. 如何检查一个值是否高于字典元素
- 21. 如何检查是否存在几个元素之一?
- 22. 如何检查HTML中是否存在另一个元素
- 23. Javascript - 如何检查一个元素是否包含图像?
- 24. 如何检查一个元素是否已从DOM中删除?
- 25. 如何判断元素是否是javascript/jquery中父元素的最后一个或第一个子元素?
- 26. 如何仅显示foreach循环绑定中的第一个元素?
- 27. 检查元素是否是列表中的最后一个
- 28. JQuery:检查前一个兄弟是否是第一个孩子
- 29. 如何检查值是否为数组,然后获取第一个元素
- 30. 量角器 - 检查一个元素是否与另一个元素相邻
GRR,还不快足够!没有看到geofftnz的帖子。 – Hamza 2010-08-24 03:25:07
这是StackOverflow获得专利的易问题竞赛:) – geofftnz 2010-08-24 03:32:51
发挥良好的先生,恭喜:) – Hamza 2010-08-24 03:36:17