从Method获取每个Label的值,该值作为List返回

时间:2017-12-05 06:08:32

标签: asp.net linq

我需要使用Linq将ItemCode和ItemName的值放入单独的标签中。我实施了一个加入 tblItem tblInventry 的查询。它将所有行作为List返回。查询如下,

public tblItem GetItemNameAndCode(int itemID)
{
    var iNameCode = from it in DB.tblItems
                    join inv in DB.tblInventories on it.ItemID equals inv.ItemID
                    where it.ItemID == itemID
                    orderby it.ItemName ascending
                    select it;
    return iNameCode.ToList<tblItem>();
}

从上面的查询( GetItemNameAndCode(ItemID)),我需要获取ItemCode和ItemName(升序)。该代码如下,

if (lblItemID != null)
{
      int ItemID = Convert.ToInt32(lblItemID.Text);
      this.ItemBO.Item = this.ItemBO.GetItemNameAndCode(ItemID);
      if (this.ItemBO.Item != null)
      {
          lblItemCode.Text = this.ItemBO.Item.ItemCode;
          lblItemName.Text = this.ItemBO.Item.ItemName;
      }
}

但是如何才返回这两个字段? 当我使用它时,

  

返回iNameCode.ToList();

它给出了一个例外。 最终我需要按升序排序ItemName。

1 个答案:

答案 0 :(得分:1)

如果您期望GetItemNameAndCode方法中的一个或多个结果,但基于

,则不是很清楚
  • 方法的名称
  • 返回类型
  • 之后的用法

我认为您实际上希望一个单个元素具有代码名称属性

在任何情况下,我都会定义一个对象来保存返回类型

public class Shape
{
    public string Code { get; set; }
    public string Name { get; set; }
}

并重构您的方法以从列表中返回单个元素

public Shape GetItemNameAndCode(int itemID)
{
    var query = from it in DB.tblItems
                join inv in DB.tblInventories on it.ItemID equals inv.ItemID
                where it.ItemID == itemID
                orderby it.ItemName ascending
                select new Shape
                {
                    Code = it.ItemCode,
                    Name = it.ItemName,
                };

    return query.SingleOrDefault();
}

注意最后的 .SingleOrDefault()