簡體   English   中英

無法同時遍歷兩個不同的集合C#

[英]Cannot iterate through two different collections simultaneously c#

我正在ASP.NET MVC中工作,並且我嘗試將兩個集合組合在一個循環中執行,我嘗試了ZIP方法,但是如果一個集合為空,它不會返回任何內容。 我嘗試了Concat方法,但它給出了此錯誤

System.Collection.Generic.ICollection<Project.Entities.TDetail> does not contains definition for 'Concat'.

我的ViewModel:

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天的時間,但是找不到任何解決方案,請為此提供幫助。

我只想並排列出它們,它們之間沒有關系

然后, ConcatZip都不適合您。 Concat會將項目追加到列表(“垂直”)。 Zip將為您提供“並排”集合,但只能為您提供與最短集合一樣多的元素。

您可以直接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
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM