无法同时遍历两个不同的集合 c#
Cannot iterate through two different collections simultaneously c#
我在 ASP.NET MVC 中工作,我正在尝试合并两个集合以在一个循环中执行我已经尝试过 ZIP 方法,但它不会 return 如果一个集合是空的。我尝试了 Concat 方法,但它给出了这个错误
System.Collection.Generic.ICollection<Project.Entities.TDetail> does not contains definition for 'Concat'.
我的视图模型:
public class CategoryViewModel
{
public virtual ICollection<TDetail> Details { get; set; }
public virtual ICollection<TRequest> Requests { get; set; }
}
我的循环:
@foreach (var item in Model.Details.Concat(Model.Requests))
{
}
ZIP 方法已尝试但失败:
var request = Model.Requests.ToList();
var details = Model.Details.ToList();
var final = details.Zip(request, (x, y) => new { Detail = x, Request = y });
@foreach (var item in final)
{
}
我已经花了 3 天时间解决这个问题,但找不到任何解决方案,请帮我解决这个问题。
i just want to list them side by side, there is no relationship between them
那么 Concat
或 Zip
都不适合您。 Concat
会将项目附加到列表 ("vertically")。 Zip
将为您提供 "side-by-side" 个集合,但只会为您提供与 最短 个集合一样多的元素。
你可以直接 for
循环:
var requests = Model.Requests.ToList();
var details = Model.Details.ToList();
var length = Math.Max(requests.Count, details.Count);
@for(int i=0 ; i< length ; i++)
{
if(i <= request.Count)
{
var request = requests[i];
@: html code here
}
if(i <= details.Count)
{
var detail = deatils[i]
@: html code here
}
}
或者单独循环并创建两个不同的 UI 元素,使用样式将它们并排放置
var requests = Model.Requests.ToList();
var details = Model.Details.ToList();
@foreach (var item in requests)
{
@: html code here
}
@foreach (var item in details)
{
@: html code here
}
我在 ASP.NET MVC 中工作,我正在尝试合并两个集合以在一个循环中执行我已经尝试过 ZIP 方法,但它不会 return 如果一个集合是空的。我尝试了 Concat 方法,但它给出了这个错误
System.Collection.Generic.ICollection<Project.Entities.TDetail> does not contains definition for 'Concat'.
我的视图模型:
public class CategoryViewModel
{
public virtual ICollection<TDetail> Details { get; set; }
public virtual ICollection<TRequest> Requests { get; set; }
}
我的循环:
@foreach (var item in Model.Details.Concat(Model.Requests))
{
}
ZIP 方法已尝试但失败:
var request = Model.Requests.ToList();
var details = Model.Details.ToList();
var final = details.Zip(request, (x, y) => new { Detail = x, Request = y });
@foreach (var item in final)
{
}
我已经花了 3 天时间解决这个问题,但找不到任何解决方案,请帮我解决这个问题。
i just want to list them side by side, there is no relationship between them
那么 Concat
或 Zip
都不适合您。 Concat
会将项目附加到列表 ("vertically")。 Zip
将为您提供 "side-by-side" 个集合,但只会为您提供与 最短 个集合一样多的元素。
你可以直接 for
循环:
var requests = Model.Requests.ToList();
var details = Model.Details.ToList();
var length = Math.Max(requests.Count, details.Count);
@for(int i=0 ; i< length ; i++)
{
if(i <= request.Count)
{
var request = requests[i];
@: html code here
}
if(i <= details.Count)
{
var detail = deatils[i]
@: html code here
}
}
或者单独循环并创建两个不同的 UI 元素,使用样式将它们并排放置
var requests = Model.Requests.ToList();
var details = Model.Details.ToList();
@foreach (var item in requests)
{
@: html code here
}
@foreach (var item in details)
{
@: html code here
}