0

私のアプリケーションは、Linq-to-Sql を使用した asp.net MVC です。以下を使用してビューをフィルタリングしようとしています。

以下を使用して、フィルターを SQL Server ビューに既に追加しました。

WHERE (dbo.Client.Recstatus IS NULL) OR (dbo.Client.Recstatus = 0)

SQL Server Management Studio で実行すると問題なく動作しますが、アプリケーションにまだエントリが表示されます。

次を使用して、リポジトリで再度フィルタリングしようとしました。

List<vw_Client_info> searchResult = new List<vw_Client_info>().Where(c=> c.Recstatus != 1);

Recstatussmallint

次のエラーが表示されます。

タイプ 'System.Collections.Generic.IEnumerable' を 'System.Collections.Generic.List' に暗黙的に変換することはできません。明示的な変換が存在します (キャストがありませんか?)

どうぞよろしくお願いいたします。

4

4 に答える 4

2

ToList()最後にメソッドを使用するのを忘れているようです。これを試して:

List<vw_Client_info> searchResult = 
    new List<vw_Client_info>().Where(c=> c.Recstatus != 1).ToList();
于 2013-05-04T06:54:03.947 に答える
2

二つの問題

  1. new List<vw_Client_info>()新しいリストです データがありません
  2. .ToList()ステートメントの最後に呼び出す必要があります

以下のようなものを試すことができます

using (YourDatacontext context= new YourDatacontext(connStr))
{
    List<vw_Client_info> searchResult = 
          context.vw_Client_infos.Where(c=> c.Recstatus != 1).ToList();
}
于 2013-05-04T07:02:01.663 に答える
0

以下を含む列挙可能なメソッドWhereはリストを返さず、IEnumerable を返します

コードを次のように変更できます

IEnumerable<vw_Client_info> searchResult = 
          new List<vw_Client_info>().Where(c=> c.Recstatus != 1);

または

var searchResult = 
         new List<vw_Client_info>().Where(c=> c.Recstatus != 1);

これは上記と同じです(コンパイラーが型を派生させます)

または

List<vw_Client_info> searchResult = 
         new List<vw_Client_info>().Where(c=> c.Recstatus != 1).ToList();
于 2013-05-04T06:59:47.347 に答える
0

これは、Select から匿名型を返し、それを に格納しようとしているためList<vw_Client_info>です。プロジェクションは常に匿名型を作成します。テールに格納IEnumerableまたは使用するようToList()にします。

于 2013-05-04T07:01:52.537 に答える