gpt4 book ai didi

c# - MVC5 Razor View String.Join 每次迭代时反转顺序

转载 作者:太空宇宙 更新时间:2023-11-03 15:42:52 26 4
gpt4 key购买 nike

我正在 ASP.NET MVC5 中填充我的 View 模型项目使用以下 LINQ在我的 Controller 中声明,使用 List<string>保存地址行,以便在我看来可以将它们连接起来。

var model = db.School
.Where(s => s.IsClosed == false)
.OrderBy(s => s.Name)
.Select(s => new SchoolIndex
{
SchoolCode = s.Code,
School = s.Name,
LocalAuthority = s.LocalAuthority,
IsClosed = s.lIsClosed,
AddressLines = new List<string>() {
s.Address1,
s.Address2,
s.Address3,
s.Address4,
s.Address5,
s.Postcode
}
}).ToPagedList(Page, 50);

在我看来,我正在使用 String.Join将地址行与 LINQ 一起连接到表格单元格中的一行查询以删除任何空或空白地址行。

<tbody>
@foreach (var school in Model)
{
<tr>
<td>@Html.DisplayFor(s => school.SchoolCode)</td>
<td>
@Html.DisplayFor(s => school.School)
<div class="school-address">
@String.Join(",", school.AddressLines
.Where(s => !String.IsNullOrEmpty(s)))
</div>
</td>
<td>@Html.DisplayFor(s => school.LocalAuthority)</td>
<td>@Html.DisplayFor(s => school.IsClosed)</td>
</tr>
}
</tbody>

但是,我的结果没有按预期显示,我得到的结果类似于:

Address1, Address2, Address3, Address4, Address5, Postcode
Postcode, Address5, Address4, Address3, Address2, Address1
Address1, Address2, Address3, Address4, Address5, Postcode
Postcode, Address5, Address4, Address3, Address2, Address1
Address1, Address2, Address3, Address4, Address5, Postcode
Postcode, Address5, Address4, Address3, Address2, Address1

预期的结果是:

Address1, Address2, Address3, Address4, Address5, Postcode
Address1, Address2, Address3, Address4, Address5, Postcode
Address1, Address2, Address3, Address4, Address5, Postcode
Address1, Address2, Address3, Address4, Address5, Postcode
Address1, Address2, Address3, Address4, Address5, Postcode
Address1, Address2, Address3, Address4, Address5, Postcode

如何解决此问题,以便正确显示所有地址?我猜我需要指定一个 OrderBy使用 Index List<string> 的值(value)虽然我不确定语法。

更新:在调试创建模型的 Controller 时 List<string>在我看来,模型没有按照指定的顺序填充,有时它是正确的,尽管它看起来是随机的。

最佳答案

可能 EF select 不会保存您尝试实现的顺序。试试这个解决方法:

// change AddressLines definition to such:
public class AddressLines
{
// your other properties
// ..
public string Address1 {get;set;}
public string Address2 {get;set;}
public string Address3 {get;set;}
public string Address4 {get;set;}
public string Address5 {get;set;}
public string PostCode{get;set;}

public IEnumerable<String> AddressLines
{
get
{
return new [] {
this.Address1,
this.Address2,
this.Address3,
this.Address4,
this.Address5,
this.Postcode
};
}
}
}

然后修改select:

   var model = db.School
.Where(s => s.IsClosed == false)
.OrderBy(s => s.Name)
.Select(s => new SchoolIndex
{
SchoolCode = s.Code,
School = s.Name,
LocalAuthority = s.LocalAuthority,
IsClosed = s.lIsClosed,
Address1 = s.Address1,
Address2 = s.Address2,
Address3 = s.Address3,
Address4 = s.Address4,
Address5 = s.Address5,
Postcode = s.Postcode
}
}).ToPagedList(Page, 50);

这样 AddressLines 集合将在实际选择后形成,并且应该具有正确的顺序。

关于c# - MVC5 Razor View String.Join 每次迭代时反转顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29513328/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com