我有以下LINQ查询,其中每一行都做了一些事情,但那行序列号我也用**标记它将返回First Or Default或只是一行,但是我的数据库中的那一列(Serial No)必须有很多行而不只是一行,这意味着如果我们在数据库中有10个项目用于ex 10联想键盘,这意味着我们为每个键盘有10个不同的序列号,但我写的查询将只显示第一个序列号,所以如何更改它以显示序列号的所有/行!谁能指引我朝正确的方向发展? THX
** PS当我将FirstOrDefault更改为tolist()时,我将在此行下出现错误SerialNoDeliverdLineOpenOrdre = t.SerialNo.Serial_No_,|错误是关于系统集合通用列表不包含Serial_No _
的定义行动和查询:
var col2 = data_2.Shipment.Where(t => t.Order_No_ == OrdreNo).Select(t => new
{
**SerialNo = data_2.Serial_Numbers.Where(ledger => ledger.Document_No_ == t.Document_No_)
.Where(ledger => ledger.Document_Line_No_ == t.Line_No_)
.toList(),
});
var bla3 = col2.Select(t => new Ordre_Open_Details_VM.OrdreDetailDeliveryLineOpen
{
**SerialNoDeliverdLineOpenOrdre = t.SerialNo.Select(x=>x.Serial_No_).ToList(), ** //Serial No
})
.ToList();
类别:
public OrdreDetailDeliveryLineOpen(List<string> SerialNoDeliverdLineOpenOrdre)
{
** this.SerialNoDeliverdLineOpenOrdre = SerialNoDeliverdLineOpenOrdre;**
}
}
** public List <string> SerialNoDeliverdLineOpenOrdre { get; set; } **
}
答案 0 :(得分:0)
因此,经过评论中的长时间讨论后,这似乎有效:
1)将SerialNoDeliverdLineOpenOrdre定义为List<string>
而不是string
:
public List <string> SerialNoDeliverdLineOpenOrdre { get; set; }
2)为SerialNo分配一个列表:
SerialNo = data_2.Item_Ledger_Entry.Where(ledger => ledger.Document_No_ == t.Document_No_)
.Where(ledger => ledger.Document_Line_No_ == t.Line_No_).ToList();
3)将列表分配给新的SerialNoDeliverdLineOpenOrdre
SerialNoDeliverdLineOpenOrdre = t.SerialNo.Select(x=>x.Serial_No_).ToList(),
4)然后,要在前端渲染列表,请循环遍历列表项:
foreach (var FieldShipment in Model.OrdreDetailDeliveryLineOpens)
{
<ul>
foreach(var x in FieldShipment.SerialNoDeliverdLineOpenOrdre)
{
<li>@x</li>
}
</ul>
}