Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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
.net 如何旋转cols<-&燃气轮机;排?_.net_Linq - Fatal编程技术网

.net 如何旋转cols<-&燃气轮机;排?

.net 如何旋转cols<-&燃气轮机;排?,.net,linq,.net,Linq,这里有一些 我的想法是我需要6行。我不在乎我有多少专栏。IEnumerable是我的列。我希望第一行保存每个IEnumerable的第一个值。如果IEnumerable/列put-1中没有足够的值作为占位符,则第二行保留第二行等 这段代码可以做到这一点,但我确信我可以使用linq语句,而不是以这种方式实现它。你知道如何使用linq实现这一点吗 var mydata = new IEnumerable<int>[] { Enumerable.Range(2, 3), Enumerabl

这里有一些

我的想法是我需要6行。我不在乎我有多少专栏。IEnumerable是我的列。我希望第一行保存每个IEnumerable的第一个值。如果IEnumerable/列put-1中没有足够的值作为占位符,则第二行保留第二行等

这段代码可以做到这一点,但我确信我可以使用linq语句,而不是以这种方式实现它。你知道如何使用linq实现这一点吗

var mydata = new IEnumerable<int>[] { Enumerable.Range(2, 3), Enumerable.Range(5, 5), Enumerable.Range(7, 6), Enumerable.Range(3, 2) };
var temp = new List<int>[6];
for (int i = 0; i < 6; ++i)
    temp[i] = new List<int>();
foreach (var v in mydata)
{
    var len = v.Count();
    int i;
    for (i = 0; i < 6&&i<len; ++i)
    {
        temp[i].Add(v.ElementAt(i));
    }
    for (; i < 6; ++i)
        temp[i].Add(-1);
}
foreach (var outer in temp)
{
    foreach (var inner in outer)
    {
        Console.WriteLine(inner);
    }
    Console.WriteLine("---");
}
var mydata=new IEnumerable[]{Enumerable.Range(2,3),Enumerable.Range(5,5),Enumerable.Range(7,6),Enumerable.Range(3,2)};
var temp=新列表[6];
对于(int i=0;i<6;++i)
temp[i]=新列表();
foreach(mydata中的var v)
{
var len=v.Count();
int i;

对于(i=0;i<6&&i这样的东西应该可以:

var mydata = new IEnumerable<int>[] { Enumerable.Range(2, 3), Enumerable.Range(5, 5), Enumerable.Range(7, 6), Enumerable.Range(3, 2) };
var maxLength = mydata.Max(l => l.Count());
var rotated = 
    from i in Enumerable.Range(0, maxLength)
    select 
        from list in mydata
        select list.Skip(i).DefaultIfEmpty(-1).First();
现在,这并不是非常有效,因为它需要对每个列表进行多次迭代。如果先将输入数据转换为数组列表,则速度应该会快一点:

var myarray = mydata.Select(l => l.ToArray());
var maxLength = myarray.Max(l => l.Length);
var rotated = 
    from i in Enumerable.Range(0, maxLength)
    select 
        from l in myarray
        select i < l.Length ? l[i] : -1;
var myarray=mydata.Select(l=>l.ToArray());
var maxLength=myarray.Max(l=>l.Length);
变量旋转=
可枚举范围(0,maxLength)中的自i
选择
从myarray中的l开始
选择i
或使用流利的语法:

var rotated = Enumerable.Range(0, maxLength)
    .Select(i => mydata.Select(l => l.Skip(i).DefaultIfEmpty(-1).First()));
var rotated = Enumerable.Range(0, maxLength)
    .Select(i => myarray.Select(l => i < l.Length ? l[i] : -1));  
var rotated=Enumerable.Range(0,maxLength)
.Select(i=>myarray.Select(l=>i
类似的方法应该可以:

var mydata = new IEnumerable<int>[] { Enumerable.Range(2, 3), Enumerable.Range(5, 5), Enumerable.Range(7, 6), Enumerable.Range(3, 2) };
var maxLength = mydata.Max(l => l.Count());
var rotated = 
    from i in Enumerable.Range(0, maxLength)
    select 
        from list in mydata
        select list.Skip(i).DefaultIfEmpty(-1).First();
现在,这并不是非常有效,因为它需要对每个列表进行多次迭代。如果先将输入数据转换为数组列表,则速度应该会快一点:

var myarray = mydata.Select(l => l.ToArray());
var maxLength = myarray.Max(l => l.Length);
var rotated = 
    from i in Enumerable.Range(0, maxLength)
    select 
        from l in myarray
        select i < l.Length ? l[i] : -1;
var myarray=mydata.Select(l=>l.ToArray());
var maxLength=myarray.Max(l=>l.Length);
变量旋转=
可枚举范围(0,maxLength)中的自i
选择
从myarray中的l开始
选择i
或使用流利的语法:

var rotated = Enumerable.Range(0, maxLength)
    .Select(i => mydata.Select(l => l.Skip(i).DefaultIfEmpty(-1).First()));
var rotated = Enumerable.Range(0, maxLength)
    .Select(i => myarray.Select(l => i < l.Length ? l[i] : -1));  
var rotated=Enumerable.Range(0,maxLength)
.Select(i=>myarray.Select(l=>i
您可以将其放在一行中,但它的可读性不强:

var temp = Enumerable
    .Range(0, 6)
    .Select(i => mydata.Select(v 
        => i < v.Count() ? v.ElementAt(i) : -1).ToList())
    .ToArray();
var temp=可枚举
.范围(0,6)
.Select(i=>mydata.Select(v
=>i
您可以将其放在一行中,但它的可读性不强:

var temp = Enumerable
    .Range(0, 6)
    .Select(i => mydata.Select(v 
        => i < v.Count() ? v.ElementAt(i) : -1).ToList())
    .ToArray();
var temp=可枚举
.范围(0,6)
.Select(i=>mydata.Select(v
=>i
很好。很有效!你不需要硬编码
6
。你赢了我!我只是输入一条注释,问如何用流利的语法来做!这很好。很有效!你不需要硬编码
6
。你赢了我!我只是输入一条注释,问如何用流利的语法来做!