0

グリッドにデータを入力するクエリがあります。クエリは次のとおりです。

var query = from r in DbContext.Groups
           select 
             new 
               {
                 r.Id, r.Name, r.Description, r.UpdatedBy, r.UpdatedDate, 
                 GroupType =DbContext.ProductTypes.Where(p=>p.Id ==  
                                           r.ProductTypes_Id).Select(t=>t.Name)
               };

したがって、問題は、別のテーブルから抽出された grouptype の値が値を表示していないことです。タイプ(System.Common....)を表示しています。これを修正するのを手伝ってもらえますか?

4

5 に答える 5

1

試してみる

GroupType =DbContext.ProductTypes.Where(p=>p.Id == r.ProductTypes_Id).Select(t=>new { name = t.Name})

または

GroupType =DbContext.ProductTypes.Where(p=>p.Id == r.ProductTypes_Id).FirstOrDefault().Name

于 2012-05-25T03:36:26.950 に答える
0

アイテムではなくシーケンスを選択しています。返される値が 1 つだけであることがわかっている場合は、次の.Single演算子を使用します。

 GroupType =DbContext.ProductTypes.Where(p=>p.Id ==  
                           r.ProductTypes_Id).Select(t=>t.Name).Single()

最後に が追加.Single()されていることに注意してください。

(型名が表示されていたのは、単にオペレーター実装クラスのデフォルト.ToString()メソッドを表示していたためです。).Select

于 2012-05-25T03:34:41.363 に答える
0

期待していますか

DbContext.ProductTypes.Where(p=>p.Id == r.ProductTypes_Id).Select(t=>t.Name)

単一の値を返すには? 現在、単一の値ではなく、linq 匿名型リストを割り当てているようです。

単一の値が必要な場合は、First を使用するか、返される値を保証できる (または保証できない) 場合は FirstOrDefault を使用します。

于 2012-05-25T03:35:47.670 に答える
0

結果として

.Select(t=>t.Name)

です

IEnumerable<ProductType>

したがって、単一の値ではなくコレクションがあります。

たとえば、クエリを次のように変更します。

var query = from r in DbContext.Groups
       select 
         new 
           {
             r.Id, r.Name, r.Description, r.UpdatedBy, r.UpdatedDate, 
             GroupType =DbContext.ProductTypes.Single(p=>p.Id ==  
                                       r.ProductTypes_Id).Name
           };

ただし、このコードには危険なものが含まれているため、追加のチェックを追加することをお勧めします (たとえば、製品タイプが見つからない場合、このコードは例外をスローします)。理想的には、このコードをリポジトリなどに移動します。 .

于 2012-05-25T03:36:12.800 に答える
0

単純な結合操作を使用しない理由

from r in DbContext.Groups join p in DbContext.ProductTypes on r.ProductTypes_Id equals p.Id
select new { Id = r.Id, Name = r.Name, Description = r.Description, UpdatedBy = r.UpdatedBy, UpdatedDate = r.UpdatedDate, GroupType = p.Name };
于 2012-05-25T03:59:44.897 に答える