WPF C#用于每个获取下一个值
我从数据库中获得了一个记录列表,我在CRUD类中检索到了这些记录(我使用的是实体框架和模型。问题是我的类中有CRUD代码): 公共IList GetRecords(int-listTask、int-listActivity) { IList lstRecords=context.questionHists.ToList(); 返回lstRecords.Where(a=>a.TaskID==listTask&&a.ActivityID==listActivity).ToList(); } 这就是我在xaml.cs中对它的称呼:WPF C#用于每个获取下一个值,c#,wpf,foreach,lambda,records,C#,Wpf,Foreach,Lambda,Records,我从数据库中获得了一个记录列表,我在CRUD类中检索到了这些记录(我使用的是实体框架和模型。问题是我的类中有CRUD代码): 公共IList GetRecords(int-listTask、int-listActivity) { IList lstRecords=context.questionHists.ToList(); 返回lstRecords.Where(a=>a.TaskID==listTask&&a.ActivityID==listActivity).ToList(); } 这就是
IList<Model.questionhint> lstQuestionHints = qh.GetRecords(taskID, activityID);
StackPanel sp = new StackPanel();
foreach (Model.questionhint qhm in lstQuestionHints)
{ //Code here
}
IList lstQuestionHitts=qh.GetRecords(taskID,activityID);
StackPanel sp=新的StackPanel();
foreach(lstQuestionHits中的Model.questionhint qhm)
{//这里是代码
}
但在我的数据库表中,有一个列调用questionNo,有些记录具有相同的questionNo、activityID和taskID。有些记录具有相同的activityID和taskID,但问号不同。
以下是我的数据库表的外观:
目前,我可以很好地显示每一条记录(使用foreach循环),但我想要的是将相同activityID、taskID和questionNo的记录分组在一行中,现在每一条记录都按如下方式逐行分开:
我希望它是这样的
我每天下午都要小睡一会儿
太阳[回答]不绕地球转
我尝试在CRUD中进行分组查询(我使用的是lambda表达式),但由于一些IGroup和数据成形的原因(这方面不太好),它失败了,有没有其他方法可以轻松做到这一点
我想到的是使用foreach循环,但是我能得到questionNo的下一个值吗?例如,在这个循环中,问号是1,我想检查下一个循环中的问号是否相同,如果不相同,我将把它添加到下一行,但如果相同,我将把它添加到同一行。但是我不擅长面板和东西,因为我对编程和WPF/C都是新手
如果您有任何帮助/解决方案,我将不胜感激。首先,我不会在一份声明中尝试这样做。您可能希望对数据进行某种程度的预处理,因为每个问题(例如,单行)都由开始内容部分、选项部分和结束部分组成,至少跨越2条记录 因此,创建一个模型来表示问题的一部分,如下所示(只是一个示例): 现在您已经有了
问题的集合
,您可以在代码隐藏中创建控件(正如您似乎想做的那样),或者使用XAML和项控件
和数据模板
等进行模拟
希望能有帮助
IList<Model.questionhint> lstQuestionHints = qh.GetRecords(taskID, activityID);
StackPanel sp = new StackPanel();
foreach (Model.questionhint qhm in lstQuestionHints)
{ //Code here
}
public abstract class QuestionPart {}
public class ContentPart : QuestionPart {
// holds the content
}
public class OptionsPart : QuestionPart {
// holds the options and the answer
}
public class Question{
public List<QuestionPart> questionParts {get; set;}
}
public class YourViewModel{
public List<Question> questions {get; set;}
}
List<QuestionPart> questionParts = lstQuestionHints.SelectMany((r) => ExtractQuestionParts(r)); // ExtractQuestionParts returns a list of 1 or more question parts from each record
var groupedQuestionParts = questionParts.GroupBy((r) => r.QuestionNo);
var questions = groupedQuestionParts.Select((g) => return new Question(g.Key, g.ToList()));