Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.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
C# 无法从“System.Guid”转换为“_C#_Linq - Fatal编程技术网

C# 无法从“System.Guid”转换为“

C# 无法从“System.Guid”转换为“,c#,linq,C#,Linq,因为我已经编写了这样的代码 var recordX = (from x in en.TemplateRevisions where x.PracticeId == _PracticeId group x by x.TemplateId into g select new {

因为我已经编写了这样的代码

var recordX = (from x in en.TemplateRevisions
                       where x.PracticeId == _PracticeId
                       group x by x.TemplateId into g
                       select new
                       {
                           TemplateReviewId = (from l in en.TemplateRevisions
                                               where l.TemplateId == g.Key.Value
                                               orderby l.DateChanged descending
                                               select l.TemplateReviewId
                                               ).Take(1)
                       }).ToList();
var records = (from x in en.TemplateRevisions
                       where recordX.Contains(x.TemplateReviewId)

                       )
在这里,我试图访问它像这样使用

var recordX = (from x in en.TemplateRevisions
                       where x.PracticeId == _PracticeId
                       group x by x.TemplateId into g
                       select new
                       {
                           TemplateReviewId = (from l in en.TemplateRevisions
                                               where l.TemplateId == g.Key.Value
                                               orderby l.DateChanged descending
                                               select l.TemplateReviewId
                                               ).Take(1)
                       }).ToList();
var records = (from x in en.TemplateRevisions
                       where recordX.Contains(x.TemplateReviewId)

                       )
这会引发如下错误record.Containsx.TemplateReview需要访问此匿名列表


正如我所说,第一个代码是正确的,但当我尝试使用contains访问时,无法将“System.Guid”转换为“

您的第一个语句创建了一个匿名类型的对象列表,没有明显的原因。通常,如果您发现自己的匿名类型只有一个属性,那么最好只选择该值,如下所示:

var recordX=从en.TemplateRevisions中的x开始 其中x.PracticeId==\u PracticeId 按x.TemplateId将x分组为g //直接选择guid即可 从en.TemplateRevisions中的l中选择 其中l.TemplateId==g.Key.Value orderby l.DateChanged降序 //注意:选择单个元素作为Guid, //而不是限制为1个元素的序列 选择l.TemplateReviewId.FirstOrDefault 托利斯特先生; 然后,您将有一个列表,它将更好地用于第二个查询


我想还有一种更简单的方法来表示第一个查询,但我没有尝试解决这个问题,因为它不是这个问题的一部分。

它仍然显示列表记录作为指向它。@KapilGupta:你说记录作为指向它是什么意思?你是说recordX的类型是List?看起来不应该是。。。如果您将鼠标悬停在Take1调用上,会显示什么类型?@KapilGupta:请注意,如果您可以在问题中提供一个值,我们将更容易自己验证这一点。当我指向“var recordX”时,它会显示我在那里悬停的列表。如果我将鼠标悬停在Take1调用上,它仍然显示为IQueryable IQueryable。Takeint count+1重载