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
简单LINQ查询_Linq - Fatal编程技术网

简单LINQ查询

简单LINQ查询,linq,Linq,我有一张X个项目的清单。我希望使用LINQ查询将其转换为批次(列表列表),其中每个批次有4个项目,但最后一个批次可以有1-4个项目(不管剩余的是什么)。此外,数字4应该是可配置的,因此它可以是5、17等 谁能告诉我怎么写 List<Item> myItems = ...; List<List<Item>> myBatches = myItems.???? List myItems=。。。; 列出我的批次=我的项目。???? 提前谢谢你 是一篇关于使用和执行

我有一张X个项目的清单。我希望使用LINQ查询将其转换为批次(列表列表),其中每个批次有4个项目,但最后一个批次可以有1-4个项目(不管剩余的是什么)。此外,数字4应该是可配置的,因此它可以是5、17等

谁能告诉我怎么写

List<Item> myItems = ...;
List<List<Item>> myBatches = myItems.????
List myItems=。。。;
列出我的批次=我的项目。????

提前谢谢你

是一篇关于使用和执行分页的好文章,它的功能与您所请求的相同。它不会让您一直使用LINQ,但希望能有所帮助。

是一篇关于使用和执行分页的好文章,它的功能与您所请求的功能完全相同。它不会让你一路找到一行LINQ,但希望能有所帮助。

如果你对结果键入为
IEnumerable
感到满意,那么你可以这样做:

int groupSize = 4;

var myBatches = myItems.Select((x, i) => new { Val = x, Idx = i })
                       .GroupBy(x => x.Idx / groupSize,
                                x => x.Val);
如果您想要一个实际的
列表
,则需要添加几个额外的调用:


如果您对结果键入为
IEnumerable
感到满意,则可以执行以下操作:

int groupSize = 4;

var myBatches = myItems.Select((x, i) => new { Val = x, Idx = i })
                       .GroupBy(x => x.Idx / groupSize,
                                x => x.Val);
如果您想要一个实际的
列表
,则需要添加几个额外的调用:


这让我想起了在LINQ之前我们是如何做到的

var vessels = new List<Vessel>() 
    { new Vessel() { id =  8, name = "Millennium Falcon" }, 
      new Vessel() { id =  4, name = "Ebon Hawk" },
      new Vessel() { id = 34, name = "Virago"},
      new Vessel() { id = 12, name = "Naboo royal starship"},
      new Vessel() { id = 17, name = "Radiant VII"},
      new Vessel() { id =  7, name = "Lambda-class shuttle"},
      new Vessel() { id = 23, name = "Rogue Shadow"}};

var chunksize=2;

// With LINQ                 
var vesselGroups = vessels.Select((v, i) => new { Vessel = v, Index = i })
                          .GroupBy(c => c.Index / chunksize, c => c.Vessel, (t,e)=>e.ToList())
                          .ToList();

// Before LINQ (most probably not optimal)
var groupedVessels = new List<List<Vessel>>();
var g = new List<Vessel>();
var chunk = chunksize;
foreach(var vessel in vessels)
{
    g.Add(vessel);
    chunk--;
    if (chunk == 0)
    {
        groupedVessels.Add(g);
        g = new List<Vessel>();
        chunk = chunksize;
    }
}
groupedVessels.Add(g);
var容器=新列表()
{new Vessel(){id=8,name=“Millennium Falcon”},
新船(){id=4,name=“黑檀鹰”},
新血管(){id=34,name=“Virago”},
新船(){id=12,name=“纳布皇家星际飞船”},
新血管(){id=17,name=“Radiant VII”},
新船(){id=7,name=“Lambda class-shuttle”},
新血管(){id=23,name=“Rogue Shadow”};
var-chunksize=2;
//与林克
var vesselGroups=血管。选择((v,i)=>new{Vessel=v,Index=i})
.GroupBy(c=>c.Index/chunksize,c=>c.vesser,(t,e)=>e.ToList())
.ToList();
//LINQ之前(很可能不是最佳)
var groupedVessers=新列表();
var g=新列表();
var chunk=chunksize;
foreach(容器中的var容器)
{
g、 添加(容器);
块--;
if(chunk==0)
{
分组容器。添加(g);
g=新列表();
chunk=chunksize;
}
}
分组容器。添加(g);

这让我想起了在LINQ之前我们是如何做到这一点的

var vessels = new List<Vessel>() 
    { new Vessel() { id =  8, name = "Millennium Falcon" }, 
      new Vessel() { id =  4, name = "Ebon Hawk" },
      new Vessel() { id = 34, name = "Virago"},
      new Vessel() { id = 12, name = "Naboo royal starship"},
      new Vessel() { id = 17, name = "Radiant VII"},
      new Vessel() { id =  7, name = "Lambda-class shuttle"},
      new Vessel() { id = 23, name = "Rogue Shadow"}};

var chunksize=2;

// With LINQ                 
var vesselGroups = vessels.Select((v, i) => new { Vessel = v, Index = i })
                          .GroupBy(c => c.Index / chunksize, c => c.Vessel, (t,e)=>e.ToList())
                          .ToList();

// Before LINQ (most probably not optimal)
var groupedVessels = new List<List<Vessel>>();
var g = new List<Vessel>();
var chunk = chunksize;
foreach(var vessel in vessels)
{
    g.Add(vessel);
    chunk--;
    if (chunk == 0)
    {
        groupedVessels.Add(g);
        g = new List<Vessel>();
        chunk = chunksize;
    }
}
groupedVessels.Add(g);
var容器=新列表()
{new Vessel(){id=8,name=“Millennium Falcon”},
新船(){id=4,name=“黑檀鹰”},
新血管(){id=34,name=“Virago”},
新船(){id=12,name=“纳布皇家星际飞船”},
新血管(){id=17,name=“Radiant VII”},
新船(){id=7,name=“Lambda class-shuttle”},
新血管(){id=23,name=“Rogue Shadow”};
var-chunksize=2;
//与林克
var vesselGroups=血管。选择((v,i)=>new{Vessel=v,Index=i})
.GroupBy(c=>c.Index/chunksize,c=>c.vesser,(t,e)=>e.ToList())
.ToList();
//LINQ之前(很可能不是最佳)
var groupedVessers=新列表();
var g=新列表();
var chunk=chunksize;
foreach(容器中的var容器)
{
g、 添加(容器);
块--;
if(chunk==0)
{
分组容器。添加(g);
g=新列表();
chunk=chunksize;
}
}
分组容器。添加(g);