我有以下LINQ查询,其中每一行都做了一些事情,但那行序列号我也标记为**它将返回First或Default或只是一行,但我的数据库中的那一列(序列号)有很多行不仅仅是一个,这意味着如果我们在数据库中有10个项目用于ex 10联想键盘,这意味着我们每个键盘有10个不同的序列号,但是我写的查询将只显示第一个序列号,那么我怎么能改变它以显示序列号的所有/行!谁能指引我朝正确的方向发展?谢谢
** 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; } **
}
所以经过评论中的长时间讨论后,这似乎有效:
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>
}