SQLデータベースを使用してアプリケーションを作成しています。
私は次のようにデータを取得します:
var vAll= from a in vPRCEntities.tblProducts
select a;
それでは、どの変数が「vAll」ですか?メソッドで使用したいので:
private void vGet( ?? vAll)
{
}
答えには些細なことだと思いました。さらに、本当の功績は、欠けている部分を指摘したCharlehにあります。とにかくここにあります
試す:
private void vGet(IEnumerable<Product> vAll)
どこProduct
にあなたのタイプでなければなりませんtblProducts
:)
あなたは提案されたようにこれを使うことができます:
private void vGet(IEnumerable<Product> vAll){ }
Linqは遅延実行を使用することに注意してください。これは、コレクションから読み取るまでクエリが実際に実行されないことを意味します。それは問題ありませんが、アプリケーションの別の部分でコレクションを読み取ると、問題が発生する可能性があります。たとえば、データを取得する前に接続が閉じられる場合があります。
これを回避するには、次のような方法を試すことができます。
var vAll = (from a in vPRCEntities.tblProducts select a).ToList<Product>();
これにより、コレクションがすぐに読み取られ、List<>オブジェクトに配置されます。次に、次のようにメソッドを記述できます。
private void vGet(List<Product> vAll){ } //IEnumerable will also work
コレクションが読み取られてリストに入れられたため、遅延実行は機能しなくなりました。
注:データの量が非常に多い場合、そのデータはすべてリストのメモリに格納されるため、これは適切な解決策ではない可能性があります。ほとんどのもののように-それは異なります。