Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WPF C#用于每个获取下一个值_C#_Wpf_Foreach_Lambda_Records - Fatal编程技术网

WPF C#用于每个获取下一个值

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(); } 这就是

我从数据库中获得了一个记录列表,我在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中对它的称呼:

 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()));