C# 隐式转换类型

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

我在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 { 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
。如果你用鼠标右键点击每一个,然后点击“转到定义”,它们会去同一个地方吗。