顛倒順序我有一個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有時但不總是,變成問題順序後到前,而不會反轉答案或questionID,從而將其拋出。 即如果該集合是questionID 1,2,3並且問題A,B,C有時返回1,2,3和C,B,A
任何人都可以建議爲什麼它可能會這樣做?爲什麼只在一列上?謝謝!
編輯:明白了,謝謝大家!在情況下,它有助於在未來的人,這裏是用來解決方案:
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中,訂單將被保留。如果它是數據庫驅動的提供者,那麼數據庫將確定訂單。由於您沒有指定訂單,所以可以按任意順序自由返回,因爲表格沒有固有訂單。 –
提供者是實體。我知道它並沒有推斷出一個訂單,但並不認爲這是重要的,因爲我認爲它會以相同的相對順序。 – David