Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从模型内的二维数组中提取行_C#_Linq - Fatal编程技术网

C# 从模型内的二维数组中提取行

C# 从模型内的二维数组中提取行,c#,linq,C#,Linq,我在C#工作。我有一个班级模型: public class CustomerViewModel { public string Name; public string[][] values; public bool[] flag; } 我希望使用LINQ从flag==false的所有值行中提取值[x][0],类似这样的操作应该可以做到: var result = custVm.flag.Select((f, i) => new { f, val = custVm

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

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


我希望使用LINQ从flag==false的所有值行中提取值[x][0],类似这样的操作应该可以做到:

var result = custVm.flag.Select((f, i) => new { f, val = custVm.values[i][0] })
                        .Where(i => !i.f)
                        .Select(i => i.val);
对于flag数组中的每个条目,都将值从values数组的第一列映射到一个新的匿名对象,其中包含flag和值

然后,您将按标志==false筛选此匿名对象列表

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

试试以下方法:

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();
}

它返回
a
e

“flag”是一个数组。实际情况如何?非常感谢你的帮助。。。幸运的是,经过几个小时的努力,我在LINQ中学习到了一个新概念。我仍然对多变量的lambda表达式(或者在
=>
之前的声明)不太清楚。这一点,以及
.Aggregate()
我完全无法理解。