あなた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
}