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