あなたTake(1)はまだ取得していることを意味しますIEnumerable<string>またはIQueryable<string>. の代わりにFirst()(または場合によっては ) を使用するだけで、通話をドロップすることもできます。FirstOrDefault()Take(1)ToString()
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
}