回答
有幾種方法,你可以做到這一點。 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