0

午後、

次のエラーが発生しましたが、理由がわかりません...誰かが見て、どこが間違っているのか教えてください。

タイプ「System.Collections.Generic.List」を「System.Collections.Generic.List」に暗黙的に変換することはできません

以下は、Amazonで使用できるようにリストを取得するために使用しようとしているものです。.ToList()ビットを削除しようとしましたが、何も機能しないようです。製品ASINのリストを返すMSSQLビュー「GetASINForUpdateLowPrices」を呼び出しています

 List<string> prodASINs = dc.GetASINForUpdateLowPrices.ToList();

私が使用しているビューのSQL、これはもう少し役立つかもしれません。

 SELECT     asin
 FROM         dbo.aboProducts
 WHERE     (asin NOT IN
           (SELECT     aboProducts_1.asin
            FROM       dbo.aboProducts AS aboProducts_1 INNER JOIN
                       dbo.LowestPrices ON aboProducts_1.asin = dbo.LowestPrices.productAsin
            WHERE      (dbo.LowestPrices.priceDate >= DATEADD(day, - 1, GETDATE()))))
4

4 に答える 4

1

単一のASINとはどのデータ型ですか?

おそらくあなたGetASINForUpdateLowPricesはではありませんIEnumerable<string>。これを確認してみてください:

List<string> prodASINs = dc.GetASINForUpdateLowPrices
                           .Select(e => e.ToString())
                           .ToList();
于 2012-08-03T12:20:39.897 に答える
0

varを使用するだけです。

var prodASINs = dc.GetASINForUpdateLowPrices.ToList();
于 2012-08-03T12:21:47.333 に答える
0

GetASINForUpdateLowPricesを呼び出すとList<string>、ビューにフィールドが1つしかない場合でも、直接返されません。次のアプローチを試してください。

List<string> prodASINs = dc.GetASINForUpdateLowPrices
                       .Select(item => item.AsinFieldName)
                       .ToList();

Visual Studio IntelliSenseは、入力後にプロパティ名を提案する必要がありますitem.。プロパティが文字列でない場合は、プロパティ名の最後に.ToString()を追加してみてください。

編集:コメントの後、それをとして使用する必要があるようです.Select(item => item.asin.ToString())

于 2012-08-03T12:22:54.157 に答える
0

GetASINForUpdateLowPrices.ToList()文字列のリストが作成されますか?私の最善の見積もりは、それが異なるタイプの一般的なリストであるということです。

何が起こっているのかを理解するには-に変更List<string> prodASINSしますObject obj。次に、ブレークポイントを設定して、デバッガーを使用してオブジェクトをチェックアウトすることにより、ToList()コードによって実際に生成されるリストタイプを確認します。次に、コードを更新して、値を適切なタイプのリストに移動できます。

最終的に作業を完了するには、このようにアサイナの右側をキャストする必要がある場合があります(必要に応じて文字列を別のタイプに置き換えます)-List<string> prodASINs =(List<string>)dc.GetASINForUpdateLowPrices.ToList()

于 2012-08-03T12:33:08.727 に答える