完全を期すために、いくつかのLinqの回答を次に示します。
var stringsOmittingFirstIfEmpty = temp3.Skip(temp3[0] == "" ? 1 : 0);
var stringsOmittingFirstIfEmpty = temp3.Skip(string.IsNullOrEmpty(temp3[0]) ? 1 : 0);
var stringsOmittingFirstIfEmpty = temp3.Skip(1-Math.Sign(temp3[0].Length)); // Yuck! :)
私は実際にこれらのどれも使用しないと思います (特に最後のものは本当に冗談です)。
私はおそらく行きます:
bool isFirst = true;
foreach (var item in temp3)
{
if (!isFirst || !string.IsNullOrEmpty(item))
{
// Process item.
}
isFirst = false;
}
または
bool isFirst = true;
foreach (var item in temp3)
{
if (!isFirst || item != "")
{
// Process item.
}
isFirst = false;
}
あるいは
bool passedFirst = false;
foreach (var item in temp3)
{
Contract.Assume(item != null);
if (passedFirst || item != "")
{
// Process item.
}
passedFirst = true;
}