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重载