2011-01-29 20 views
1

セッションでオブジェクトの辞書を作成するにはどうすればよいですか?具体的には、私はオブジェクトのリストを持っています:MyListは、日付をパラメータとして持つlinqクエリの結果としてMyObjectを保存します。辞書をセッションに格納する

List<MyObject> Mylist; 
MyList = GetObjects(TheDate); 

ここで、日付をキーにした辞書のセッションオブジェクトにMyListを保存したいとします。ページに特定の日付のMyL​​istが必要な場合は、まず辞書を検索し、その日付の空白の場合はGetObjectsクエリからデータを取得し、その結果をセッションの辞書に保存します。

これを行うにはどうすればよいですか?

ありがとうございました。

+0

public static class SessionVars { public static Dictionary<DateTime> DateCollections { get { return (Dictionary<DateTime>)HttpContext.Current.Session["DateCollections"]; } set { HttpContext.Current.Session["DateCollections"] = value; } } } 

そして、どこでも、あなたのコード内でそれにアクセスすると、このようになります。私が "public class Dictionary"を試してみると、私は辞書のキーワードを知ることができません。このページはすべてのページで利用できるように、この辞書をどこで宣言しますか? – frenchie

+0

'Using System.Collections.Generic; – BrokenGlass

+0

私のオブジェクト(AppObjects.cs)と対応するaspxのコードビハインドファイルを保存するファイルの両方に、すでにこの名前空間があります。 – frenchie

答えて

7
セッションで辞書を格納するための

サンプル:

Dictionary<DateTime> myDictionary = (Dictionary<DateTime>) Session["DateCollections"]; 
+0

大丈夫、ありがとう!コードビハインドファイルでこの辞書を宣言すると、アプリのファイルの背後にあるすべてのコードに宣言する必要がありますか? – frenchie

+0

辞書にアクセスする必要がある場合は、ファイルの後ろのすべてのコードに検索部分が必要です。新しい辞書を作成するときに必要な記憶部分です。 – BrokenGlass

+0

マスターページで辞書を宣言するのは良い考えですか?私はオブジェクトのリストの10かそこらの辞書を作成することを考えています。 – frenchie

2

私はファサードのいくつかの並べ替えを作成します。セッションから取得するための

List<MyObject> Mylist; 
MyList = GetObjects(TheDate); 
Dictionary<DateTime> myDictionary = new Dictionary<DateTime>(); 
myDictionary[TheDate] = MyList; 
Session["DateCollections"] = myDictionary; 

サンプル(それはあります確認するためにnullチェックを持っている必要があります) Session変数にアクセスすることができます。これにより、値の取得と設定が非常に簡単になります。さらに、セッションのvar名がすべて同じ場所に格納されているため、セッションの名前を正しく取得することについて心配する必要はありません。例:私はObjectsSessionsと呼ばれる名前空間内の異なるファイルにMyDictioと呼ばれるオブジェクトを作成しようとした

var List<MyObject> mylist = SessionVars.DateCollections[TheDate]; 
関連する問題