C# 返回一个具有多列值linq的字符串
我有一个问题 是否可以在linq中返回一个字符串和多列值 像这样C# 返回一个具有多列值linq的字符串,c#,linq,C#,Linq,我有一个问题 是否可以在linq中返回一个字符串和多列值 像这样 string ProductName = ((from P in DataModel.DIS_PRODUCT join M in DataModel.SET_PACK_UNIT on P.PUNIT_ID equals M.ID where P.PRODUCT_ID == ProdictId s
string ProductName = ((from P in DataModel.DIS_PRODUCT
join M in DataModel.SET_PACK_UNIT on P.PUNIT_ID equals M.ID
where P.PRODUCT_ID == ProdictId
select P.PRODUCT_NAME +" " + P.WEIGHT + " "+ M.UNIT_SYMBLE)
.Take(1)
).ToString();
您使用的是Take(1)
,这意味着您仍然得到IEnumerable
或IQueryable
。只需使用First()
string productName = (from P in DataModel.DIS_PRODUCT
join M in DataModel.SET_PACK_UNIT
on P.PUNIT_ID equals M.ID
where P.PRODUCT_ID == ProdictId
select P.PRODUCT_NAME + " " + P.WEIGHT + " "+ M.UNIT_SYMBLE)
.FirstOrDefault();
只有当LINQ提供程序支持字符串连接操作时,这才有效。另一种方法是仅获取所需的列,然后在调用者处连接:
var query = from P in DataModel.DIS_PRODUCT
join M in DataModel.SET_PACK_UNIT
on P.PUNIT_ID equals M.ID
where P.PRODUCT_ID == ProdictId
select new { P.PRODUCT_NAME, P.WEIGHT, M.UNIT_SYMBLE };
var result = query.FirstOrDefault();
if (result != null)
{
string productName = result.PRODUCT_NAME + " " +
result.WEIGHT + " " +
result.UNIT_SYMBLE;
// Use the name
}
else
{
// No results
}
另一个更清晰的方法是
var ProductsQueryItem = (from p in Products
select new
{
Name = e.ProductName+ " " + e.weight +e.UNIT_SYMBLE
})
.FirstOrDefault();
现在,您可以将其直接用于ProductsQueryItem.Name