从模型中的2D数组中提取行

时间:2013-11-19 07:31:16

标签: c# linq

我在C#工作。我有一个班级模特:

public class CustomerViewModel
{
    public string Name;
    public string[][] values;
    public bool[] flag;
}


我希望使用LINQ

从flag == false的所有值行中提取值[x] [0]

2 个答案:

答案 0 :(得分:3)

这样的事情应该这样做:

var result = custVm.flag.Select((f, i) => new { f, val = custVm.values[i][0] })
                        .Where(i => !i.f)
                        .Select(i => i.val);

对于标志数组中的每个条目,您将值数组的第一列中的值映射到包含标志和值的新的anonyomous对象。

然后您通过flag == false过滤此匿名对象列表。

然后,您只选择匿名对象的“值”部分。

答案 1 :(得分:1)

试试这个:

static void Main(string[] args)
{
    var model = new CustomerViewModel()
    {
        flag = new bool[] { false, true, false },
        Name = "a",
        values = new string[][] { 
            new string[] { "a", "b" },
            new string[] { "c", "d" },
            new string[] { "e", "f" }
        }
    };

    var result = model.values
        .Where((v, i) => !model.flag[i])
        .Select(v => v[0]).ToList();
}

返回ae