我需要使用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。
答案 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()