

C# Sessionに関しての質問です。  
Sessionに配列やコレクションを格納して保持したとします。

[code]

    List<int> numlist = new List<int>();
    Session["a"] = numlist;
    
[/code]

この際に、Session["a"]内のnumlistに値を追加していくことは可能なのでしょうか？  
いろいろと調べたのですが、配列やコレクションをSessionに格納できることはわかりましたが、  
Session内の配列やコレクションを操作する方法がわからず困っています。

ご存じの方がいましたら、教えていただけると助かります。  
よろしくしお願いします。


CC BY-SA 4.0
2022-05-18T05:38:27.997
88898
2022-08-04T01:13:54.823
2022-05-18T11:14:34.540
3060
52379
question
c# asp.net
C# で Session 変数の内容を操作することは可能？


以下の記事を見ると直接操作するのは出来ないようですね。  
[adding string array in existing session of array
c#](https://stackoverflow.com/q/52479013/9014308)  
[Using List Objects in a Session
Variable](https://social.msdn.microsoft.com/Forums/en-
US/fe3782d3-431e-40e1-8908-e35299de0853)

いずれの記事もSessionに変数が無ければ自分で作って代入する、変数が存在するならいったんローカルにコピーして必要な操作を行ってからSessionに代入するということを行っているようです。

* * *

**追記**

コメントで指摘されている`ASP.NET Core`の場合の方法は以下の記事が参考になると思われます。  
[セッション値の設定および取得 - ASP.NET Core でのセッションと状態の管理](https://docs.microsoft.com/ja-
jp/aspnet/core/fundamentals/app-state?view=aspnetcore-6.0#set-and-get-session-
values)

> セッション状態にアクセスするには、Razor Pages の PageModel クラスか、MVC の Controller クラスを
> HttpContext.Session と共に使用します。 このプロパティは ISession の実装です。  
>  ISession の実装では、整数値や文字列値を設定および取得するための複数の拡張メソッドが提供されています。 拡張メソッドは
> Microsoft.AspNetCore.Http 名前空間にあります。

ISessionのSet/Getの型を指定した拡張メソッドを実装してシリアライズ/デシリアライズを行うようです。

これの前後も含めてこのページ全体が`ASP.NET Core`でのSessionの取り扱いを解説しているのでしょう。

英語版サイトの関連記事：  
[How to store list object in session variable using asp.net core. And how to
fetch values from session variable from the
View?](https://stackoverflow.com/q/56833328/9014308)  
[Define and obtain a list of ASP.Net Core
(Session)](https://stackoverflow.com/q/55269087/9014308)  
[How to set different generic list value in same session in asp.net core
3.1](https://stackoverflow.com/q/64065561/9014308)


CC BY-SA 4.0
2022-05-18T06:09:53.023
88899
2022-05-19T10:25:16.470
2022-05-19T10:25:16.470
26370
26370
88898
answer


プロパティを使えばいいと思います！

[code]

    public List<string> NumList {
       get { return (List<string>) Session["a"]; }
       set { Session["a"] = value; }
    }
    
[/code]


CC BY-SA 4.0
2022-08-04T01:13:54.823
90372
2022-08-04T01:13:54.823
53838
88898
answer