により、グループ内の順序を逆にLINQは、私は、以前のクエリのいくつかの行にいくつかの一つの列を逆にしているようだLINQクエリを持っている:はなぜ
var dataSet = from fb in ds.Feedback_Answers
where fb.Feedback_Questions.Feedback_Questionnaires.QuestionnaireID == criteriaType
&& fb.UpdatedDate >= dateFeedbackFrom && fb.UpdatedDate <= dateFeedbackTo
select new
{
fb.Feedback_Questions.Feedback_Questionnaires.QuestionnaireID,
fb.QuestionID,
fb.Feedback_Questions.Text,
fb.Answer,
fb.UpdatedBy
};
は、最初のデータセットを取得し、作業を確認しました。 これは、このように分類されます。グループ化
var groupedSet = from row in dataSet
group row by row.UpdatedBy
into grp
select new
{
Survey = grp.Key,
QuestionID = grp.Select(i => i.QuestionID),
Question = grp.Select(q => q.Text),
Answer = grp.Select(a => a.Answer)
};
が、(タイプ:文字列、リストint型、リスト列、リストint型)を得られたreturnsetは時々、常にではないが、後ろから前に質問の順番をオン、 answerまたはquestionIDを反転させずに、それをスローします。 つまり、questionID 1,2,3と質問A、B、Cの場合は、1,2,3、C、B、Aを返すことがあります。
なぜこのようなことが起こるかもしれないのですか?なぜ1つの列にしかないのですか?ありがとう!
編集:ありがとうございました!場合には、それが将来的に誰を助け、ここで使用されるソリューションは、次のとおりです。グループ化されたオーダーの
var groupedSet = from row in dataSet
group row by row.UpdatedBy
into grp
select new
{
Survey = grp.Key,
QuestionID = grp.OrderBy(x=>x.QuestionID).Select(i => i.QuestionID),
Question = grp.OrderBy(x=>x.QuestionID).Select(q => q.Text),
Answer = grp.OrderBy(x=>x.QuestionID).Select(a => a.Answer)
};
特定の順序でデータが必要な場合は、最後のクエリで 'OrderBy'を使用してください。 – mjwills
LINQプロバイダについても言及していません。 Linq-To-Objectでは、注文は保存されます。データベース駆動型プロバイダの場合、データベースによって注文が決定されます。順序を指定していないので、表には固有の順序がないため、任意の順序で自由に戻すことができます。 –
プロバイダはエンティティへのlinqです。私はそれが命令を推論しなかったことを知っていましたが、それが同じ相対的な順序であると思っていたとしてそれが重要であるとは思わなかった。 – David