我有一个TextBox,用户可以在其中输入许多数字(每行1个)。
然后,我要查询包含这些数字的子表。
这些数字是主表中的外键。
主表-tblOrders
子表-tblOrderItems(ForeignKey是OrderID)
public class OrderItems
{
public int ID { get; set; }
public string Order { get; set; }
public string Status { get; set; }
public DateTime DataC { get; set; }
public int Item { get; set; }
}
public IEnumerable<OrderItems> LoadItems()
{
List<OrderItems> list = new List<OrderItems>();
string[] textArray = TxtOrder.Text.Split(new string[] { ronment.NewLine }, StringSplitOptions.None);
foreach (var text in textArray.Distinct())
{
var ctx = new DbContext();
var query = (from p in ctx.tblOrderItems.AsQueryable()
join m in ctx.tblOrders on p.RegistID equals m.RegistID
where m.Order.Contains(text)
select new OrderItems
{
ID = p.RegistTID,
Order = m.Order,
Status = p.Status,
DataC = m.DataC,
Item = p.Item
}).FirstOrDefault();
list.Add(query);
}
return list;
}
问题:在主键中这样查询,我得到了正确的值,因为我在TxtOrder文本框中添加的每个项目仅获得1条记录。
但是我正在查询tblOrderItems,而tblOrderItems包含许多与tblOrders中的1条记录相关的记录,而我无法将它们全部获取到DataGridView中。
答案 0 :(得分:2)
要获取商品而不是商品,您需要:
使用ToList
代替FirstOrDefault
,并使用AddRange
代替Add
。