C# 隐式转换类型
我在WPF中这样做,并且使用实体框架 这是我的CRUD类文件中的查询代码:C# 隐式转换类型,c#,wpf,database,entity-framework,dao,C#,Wpf,Database,Entity Framework,Dao,我在WPF中这样做,并且使用实体框架 这是我的CRUD类文件中的查询代码: public class QuestionHint { public int? QuestionNo { get; set; } //change the type accordingly public int? ActivityID { get; set; } //change the type accordingly public int? TaskID
public class QuestionHint
{
public int? QuestionNo { get; set; } //change the type accordingly
public int? ActivityID { get; set; } //change the type accordingly
public int? TaskID { get; set; } //change the type accordingly
public string Answer { get; set; } //change the type accordingly
public string QuestionContent { get; set; } //change the type accordingly
public string joined { get; set; } //change the type accordingly
public string joinOption { get; set; } //change the type accordingly
}
public IList<QuestionHint> GetListKeys(int listTask, int listActivity)
{
IList<QuestionHint> lstRecords = context.questionhints.GroupBy(x => new { x.QuestionNo, x.ActivityID, x.TaskID }).ToList().Select(g => new QuestionHint()
{
QuestionNo = g.Key.QuestionNo,
ActivityID = g.Key.ActivityID,
TaskID = g.Key.TaskID,
joined = String.Join(" ",
g.OrderBy(q => q.questionhintID)
.Select(i => i.QuestionContent + "[" + i.Answer + "]")),
joinOption = String.Join(" ",
g.OrderBy(q => q.questionhintID)
.Select(a => "[" + a.Option1 + "," + a.Option2 + "]"))
}).Where(x => x.TaskID == listTask && x.ActivityID == listActivity)
//.Take(50)
.ToList();
return lstRecords;
}
公共类问题提示
{
public int?QuestionNo{get;set;}//相应地更改类型
public int?ActivityID{get;set;}//相应地更改类型
public int?TaskID{get;set;}//相应地更改类型
公共字符串应答{get;set;}//相应地更改类型
公共字符串QuestionContent{get;set;}//相应地更改类型
公共字符串{get;set;}//请相应地更改类型
公共字符串连接选项{get;set;}//相应地更改类型
}
公共IList GetListKeys(int listTask、int listActivity)
{
IList lstRecords=context.QuestionHitts.GroupBy(x=>new{x.QuestionNo,x.ActivityID,x.TaskID}).ToList().Select(g=>new QuestionHitts())
{
问题编号=g.Key.QuestionNo,
ActivityID=g.Key.ActivityID,
TaskID=g.Key.TaskID,
Join=String.Join(“”,
g、 OrderBy(q=>q.questionhintID)
.选择(i=>i.QuestionContent+“[”+i.Answer+“]”),
joinOption=String.Join(“”,
g、 OrderBy(q=>q.questionhintID)
.选择(a=>“[“+a.Option1+”,“+a.Option2+”)”)
}).Where(x=>x.TaskID==listTask&&x.ActivityID==listActivity)
//.Take(50)
.ToList();
返回记录;
}
我称之为代码隐藏:
private DAO.DAOQuestionHint qh = new DAO.DAOQuestionHint();
public MainWindow2()
{
InitializeComponent();
PopulateQuestion(1, 5);
}
private void PopulateQuestion(int activityID, int taskID)
{
IList<QuestionHint> lstQuestionHints = qh.GetListKeys(taskID, activityID); // ERROR
//codes here...
}
private DAO.DAOQuestionHint qh=new DAO.DAOQuestionHint();
公共主窗口2()
{
初始化组件();
人口问题(1,5);
}
私有void PopulateQuestion(int activityID、int taskID)
{
IList lstQuestionHits=qh.GetListKeys(taskID,activityID);//错误
//这里的代码。。。
}
我在xaml.cs的代码隐藏中遇到此错误:
无法隐式转换类型
'System.Collections.Generic.IList'
到“System.Collections.Generic.IList”。一
存在显式转换(是否缺少强制转换?)
Istella是项目的名称。DAOQuestionHint是CRUD类文件的名称
CRUD类文件中没有错误,我使用相同的查询来检索另一个项目中的记录,它工作得很好,不知道为什么它在这里不工作。在每个示例中,您对泛型参数使用了不同的大小写-
IList
在GetListKeys()中PopulateQuestion()
中的和IList
。我猜这些是指名称相似但不同的类型。我不明白。。返回类型为IList
,变量为IList
。。。它们似乎不兼容。您应该返回IEnumerable
(或者至少返回ICollection
),除非您需要通过其索引真正访问项目。而且,即使在那时。。。您始终可以在接收项目枚举的代码部分调用ToList()
<代码>列表
,甚至不建议将IList
作为返回值。而且,您的LINQ函数没有意义。。。您正在对新的匿名对象执行GroupBy
。。。它们中没有一个将被分组。然后,您就可以ToList()
,之后就不需要了。您真正需要的是首先执行Where()
语句,然后执行Select()
语句。。。这是最有效的方法。但当我试图检索记录并在其他web项目的网格视图中显示它们时,它就起作用了。我试图将QuestionHint更改为模型。QuestionHint,它给了我很多错误。我注意到了这一点,但我无法在模型之外编写QuestionHint。questionHint@user2376998如果QuestionHint位于名为“Model”的命名空间中,这很好,但它必须是Model.QuestionHint
,而不是Model.QuestionHint
。如果你用鼠标右键点击每一个,然后点击“转到定义”,它们会去同一个地方吗。