好的,情况就是这样:我有一个C#partial类,它使用.Select()。ToList()函数返回一个对象列表。
我知道这是如何运作的。
我遇到的问题是,我需要在一个列中使用四个属性。为了使这一点更加复杂,每列应该绑定到一行,这会显示许多冗余信息。
一个例子有帮助:
我现在有这个,比方说,我的班级:
public class MyClass{
public string PersonName {get;set;}
public string PersonAddress {get;set;}
public string Field1 {get;set;}
public string Field2 {get;set;}
public string Field3 {get;set;}
public string Field4 {get;set;}
}
这让你对我的班级有一个基本的了解。我的原始建议是将代码设置为执行此操作的位置:
<table>
<tr>
<td>Name</td>
<td>Address</td>
<td>Field 1<br>Field 2<br>Field 3<br>Field 4</td>
</tr>
</table>
这是有道理的。
然而,我上面的人已经决定他们想要这样的布局:
<table>
<tr>
<td>Name</td>
<td>Address</td>
<td>Field 1</td>
</tr>
<tr>
<td>Name</td>
<td>Address</td>
<td>Field 2</td>
</tr>
<tr>
<td>Name</td>
<td>Address</td>
<td>Field 3</td>
</tr>
<tr>
<td>Name</td>
<td>Address</td>
<td>Field 4</td>
</tr>
</table>
如果您注意到,每行的名称和地址都是多余的。
那么,我怎么能在C#中做到这一点?
答案 0 :(得分:3)
您可以使用LINQ SelectMany method生成一个列表,其中每个MyClass
对象包含4个对象,如下所示:
List<MyClass> list = ...
var result = list.SelectMany(x =>
new[]
{
new {x.PersonAddress, x.PersonName, Value = x.Field1},
new {x.PersonAddress, x.PersonName, Value = x.Field2},
new {x.PersonAddress, x.PersonName, Value = x.Field3},
new {x.PersonAddress, x.PersonName, Value = x.Field4}
}).ToList();
这将返回匿名类型对象的列表。
这些对象中的每一个都将包含PersonAddress
,PersonName
和Value
属性。
然后,您可以循环遍历它们以生成所需的HTML。