Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 返回一个具有多列值linq的字符串_C#_Linq - Fatal编程技术网

C# 返回一个具有多列值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

我有一个问题

是否可以在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
                       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