私はwpfアプリケーションをやっていて、私はあなたに質問したいと思う少しの問題があります。Linqクエリを保存して後で使用する方法は?
私は窓レベル上のデータベースを照会していると私はこのように私のオブジェクトのメソッドにクエリの結果を渡す:
ウィンドウレベルのコード:
payrollEmailManager.SetListOfSalariesToEmailTo(
from Record in SqlInfo.SqlTable.T_SALs
where Record.EtatPaie == 3
select new {
Matricule = Record.MatriculeSalarie,
Nom = Record.Nom,
Prenom = Record.Prenom,
Email = Record.EMail });
をこれは私の方法であり、定義:ListOfSalary
はタイプobject
でもある
public void SetListOfSalariesToEmailTo(object _ListOfSalaryToRecieveMail)
{
ListOfSalary = _ListOfSalaryToRecieveMail;
}
。
public void SendEmail()
{
foreach(var Salary in (dynamic)ListOfSalary)
{
Mail.To.Add(Salary.????
}
}
:
今ここでは、私にとって問題である、私は私がlistofsalary
の各レコードの谷に行くと、私はMatricule
またはEmail
、このようなもののようなクエリで選択した情報を取得したい別の方法を持っていますNom
列またはEmail
列を参照できません。
「参照できません」とはどういう意味ですか?試してみるとどうなりますか?動的な型定義を使用しているので、Intellisenseが*何かを提案することを期待するべきではありません。しかし、あなたは 'SendEmail'を呼び出すたびに毎回クエリを実行します。これを避けるには、クエリを*マテリアライズ*することができます。最後に 'ToList()'を呼び出すことによって( 'SetListOfSalariesToEmail'を呼び出します)。なぜあなたはこのすべてを動的にやっているのかは明らかではありません。あなたが必要とするすべての情報を持つ適切なタイプを使用してみませんか? –
私はSQL DataAdapterを使用し、結果をデータテーブルに格納します。この場合、linqを使用する代わりに、コードの残りの部分にデータテーブルを渡すことができます。 – jdweng