从C#中的多个搜索返回列表

时间:2018-07-13 17:10:59

标签: c#

我有一个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中。

1 个答案:

答案 0 :(得分:2)

要获取商品而不是商品,您需要:

使用ToList代替FirstOrDefault,并使用AddRange代替Add