2

Linq で SQL Server ストアド プロシージャを使用すると、次のように質問のリストをセッション オブジェクトに格納できます。

DataClassesDataContext myContext = new DataClassesDataContext();
var QuestionList = myContext.sp_GetAllQuestions().ToList();
Session["QuestionsList"] = QuestionList;

このセッションオブジェクトから値を読み取ったりキャストしたりするにはどうすればよいですか

var QuestionList= Session["QuestionsList"]

SQLストアドプロシージャは次のようになります

SELECT top 24 ROW_NUMBER() OVER (ORDER BY QuestionID) AS QuestionNo,Q.QuestionID,Q.Question,Q.Choices,Q.CorrectAnswer,
 Q.RelatedInfo,Q.QuestionType,CS.Section FROM Questions Q left join dbo.ChapterSection CS on Q.SectionID=CS.SectionID
4

5 に答える 5

2

これはvar、型を推測するための の使用法があなたを悩ませているところです。

QuestionList次のように、 のタイプを明示的に述べます。

List<sp_GetAllQuestionsResult> QuestionList = = myContext.sp_GetAllQuestions().ToList();
Session["QuestionsList"] = QuestionList;

Session次のように、キャストする必要があるものから値を取得するときは明らかです。

List<sp_GetAllQuestionsResult> QuestionList= Session["QuestionsList"] as List<sp_GetAllQuestionsResult>;

// Check if the list is null or not
if(QuestionList != null)
{
    // Safe to use list because it was found and successfully cast

}
于 2013-09-17T21:09:30.113 に答える
1
List<Question> QuestionList= Session["QuestionsList"] as List<Question>;
List<Question> QuestionList= (List<Question>) Session["QuestionsList"];

キャストできるようにするには、同じタイプのオブジェクトが必要であり、シリアライズ可能である必要があります。

最初のオプションは、変換できない場合は null を返し、2 番目のオプションはクラッシュします。

于 2013-09-17T20:57:36.667 に答える
0
News newsList=new News();

Session["news"]=newsList;

セッションオブジェクトを取得したいとき;

News newList=Session["news"] as News;

session をキャストする必要があります。そのように使用します

于 2013-09-17T21:06:11.520 に答える
0

本当にあなたが表すタイプに依存しますが、が a であるQuestionsListと仮定すると、次のようなものが必要になります:QuestionListList<Question>

var QuestionList= Session["QuestionsList"] as List<Question>;
于 2013-09-17T20:58:14.047 に答える