using System;
using System.Linq;
public class Test
{
struct MyStruct
{
public int index;
}
private static MyStruct?[] GetRow(int?[] row)
{
return row.Select(
(el, ind) => el == 0 ? (MyStruct?)new MyStruct { index = ind } : null)
.Where(el => el != null).ToArray();
}
static void Main(string[] args)
{
int?[] row = new int?[] { 0, null, 1, 2, 3, 0 };
var ar = GetRow(row);
ar.Select(el => { Console.WriteLine(el?.index); return el; }).ToArray();
Console.WriteLine(ar.Count());
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uTGlucTsKCnB1YmxpYyBjbGFzcyBUZXN0CnsKICAgICAgICBzdHJ1Y3QgTXlTdHJ1Y3QKICAgIHsKICAgICAgICBwdWJsaWMgaW50IGluZGV4OwogICAgfQogICAgcHJpdmF0ZSBzdGF0aWMgTXlTdHJ1Y3Q/W10gR2V0Um93KGludD9bXSByb3cpCiAgICB7CiAgICAgICAgcmV0dXJuIHJvdy5TZWxlY3QoCiAgICAgICAgICAgICAgICAoZWwsIGluZCkgPT4gZWwgPT0gMCA/IChNeVN0cnVjdD8pbmV3IE15U3RydWN0IHsgaW5kZXggPSBpbmQgfSA6IG51bGwpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5XaGVyZShlbCA9PiBlbCAhPSBudWxsKS5Ub0FycmF5KCk7CiAgICB9CiAgICBzdGF0aWMgdm9pZCBNYWluKHN0cmluZ1tdIGFyZ3MpCiAgICB7CiAgICAgICAgaW50P1tdIHJvdyA9IG5ldyBpbnQ/W10geyAwLCBudWxsLCAxLCAyLCAzLCAwIH07CiAgICAgICAgdmFyIGFyID0gR2V0Um93KHJvdyk7CiAgICAKICAgICAgICBhci5TZWxlY3QoZWwgPT4geyBDb25zb2xlLldyaXRlTGluZShlbD8uaW5kZXgpOyByZXR1cm4gZWw7IH0pLlRvQXJyYXkoKTsKICAgICAgICBDb25zb2xlLldyaXRlTGluZShhci5Db3VudCgpKTsKICAgIH0KfQ==