2017-12-08 10 views
0

辞書からGuid Valueを取得するのに苦労しました。誰か助けてください。System.FormatExceptionが表示されています。進んでいただきありがとうございます。辞書<int, guid> Guidの値フィールドを取る方法は?

マイコード:私はポジショングループエンティティからのproductIDを取る必要がある。このことから

Dictionary<int, Guid> products = productRepository.QueryNoTracking() 
    .Select(x => new { x.ID, x.ProductKey }) 
    .ToDictionary(x => x.ProductKey, x => x.ID); 

: -

var positionGroup = new Entities.PositionGroup(); 

positionGroup.ProductID = (Guid?)products 
    .Where(s => s.Key == productKey) 
    .Select(s => s.Value).ToString(); 
+2

辞書を作成して使用しないでください。 'products [productkey]'のように? – oerkelens

+0

FWIW、LINQが機能しないのは、 'Where'が一致のコレクションを返すため、単一の値ではなく、コレクションの' ToString'を取得していることです。 'FirstOrDefault'はあなたが必要とする行に沿っていますが、答えが示すように、代わりに辞書の力を使います。 –

+0

私は実装方法がわかりません。手伝ってくれませんか! –

答えて

1

は、辞書内のキー/値を見つけるために、LINQクエリを使用しないでください。 :

Guid productID; 
bool knownProductKey = products.TryGetValue(productKey, out productID); 
if(knownProductKey) 
    positionGroup.ProductID = productID; 
else 
    positionGroup.ProductID = new Nullable<Guid>(); 
+0

私はLINQクエリを使用する必要があります要件です。 –

+2

@HelenAnita:非常に非効率なコードを使用する必要がありますか? –

+0

Ok ..私は@Tim Schmelterを試しています –

1

あなたは本当に私たちはビジュアルスタッドにそれをコピー&ペーストすることができ、十分なコードを投稿する必要があり手助けしたい場合io &簡単に修正します。

あなたが与えた情報は限られているため、実際のサンプルを手に入れるのに時間がかかります。

いずれにしても、これは他のコメントが示唆しているものとほぼ同じです。

作業コードを提供するのに十分な情報がないため、ニーズに合わせて調整する必要があります。

var positionGroup = new Entities.PositionGroup() 
{ 
    ProductID = productRepository.QueryNoTracking() 
     .Where(x => x.ProductKey==productKey) 
     .Select(x => x.ID}) 
} 
関連する問題