以下是LINQ语句的摘录,它引发了以下错误。有没有办法像我在下面那样引用ID(ID = af.AgileFactorID)?.... psf.AgileFactorID == tagSummary.ID?在此先感谢您的帮助!
select new {
ID = af.AgileFactorID,
Total = psf.Count()
};
1)当前上下文中不存在名称af,2)当前上下文中不存在名称psf
var tagCloud = from psf in tagSummary where psf.AgileFactorID == tagSummary.ID
1)错误62'AnonymousType#1'不包含'AgileFactorID'的定义,并且没有扩展方法'AgileFactorID'可以找到类型'AnonymousType#1'的第一个参数(你是否缺少using指令或汇编参考?)
2)错误63'System.Collections.Generic.IEnumerable'不包含'ID'的定义,并且没有扩展方法'ID'接受类型'System.Collections.Generic.IEnumerable'的第一个参数可以找到(您是否缺少using指令或程序集引用?)
以下是完整查询:
private void BindTagCloud()
{
var tagSummary = from af in db.AgileFactors
join psf in db.ProjectStoryFactors on af.AgileFactorID equals psf.AgileFactorID
join s in db.Stories on psf.StoryID equals psf.StoryID
join pim in db.ProjectIterationMembers on pim.ProjectIterationMemberID equals s.ProjectIterationMemberID
join i db.Iteration on ...
join p db.Project on ....
where p.ProjectID == proj_id &&
p.ProjectID == i.ProjectID &&
i.ProjectIterationID == pim.ProjectIterationID &&
pim.ProjectIterationMemberID == s.ProjectIterationMemberID &&
s.StoryID == psf.StoryID &&
psf.AgileFactorID == af.AgileFactorID
group af by af.Name into tagGroup
select new
{
ID = af.AgileFactorID,
Total = psf.Count()
};
var tagCloud = from psf in tagSummary
where psf.AgileFactorID == tagSummary.ID
select new
{
Name = psf.Name,
ID = psf.AgileFactionID,
Count = psf.Count(),
weight = Count / tagSummary.Total * 100
};
ListView1.DataSource = tagCloud;
ListView1.DataBind();
}
答案 0 :(得分:1)
您的“完整查询”无法正确,因为它有许多语法错误和缺少部分。
尽管如此,我能够重建它的最好方法是:
var tagSummary =
from af in db.AgileFactors
join psf in db.ProjectStoryFactors
on af.AgileFactorID equals psf.AgileFactorID
join s in db.Stories on psf.StoryID equals s.StoryID
join pim in db.ProjectIterationMembers
on s.ProjectIterationMemberID equals pim.ProjectIterationMemberID
join i in db.Iteration
on pim.ProjectIterationID equals i.ProjectIterationID
join p in db.Project on i.ProjectID equals p.ProjectID
where p.ProjectID == proj_id
group af by new { af.Name, af.AgileFactorID } into tagGroup
select new
{
ID = tagGroup.Key.AgileFactorID,
Name = tagGroup.Key.Name,
Count = tagGroup.Count()
};
var tagCloud =
from t in tagSummary
join psf in db.ProjectStoryFactors
on t.ID equals psf.AgileFactorID into psfs
let Count = psfs.Count()
let Total = tagSummary.Count()
select new
{
t.Name,
t.ID,
Count,
Weight = (double)Count / Total * 100,
};
此查询如何为您服务?它接近吗?
答案 1 :(得分:0)
@MiziaQ,
我怀疑缺乏答案可能是因为没有人知道从哪里开始。这似乎有很多错误,我几乎不知道从哪里开始。我也不知道你想要达到的目的。
但是一些明显的错误
如果您没有该部分,您在查询中引用af.AgileFactorID的尝试将起作用
group af by af.Name into tagGroup
然而,群组功能意味着不再可用。如果您需要访问AgileFactorID,您是否需要通过
将其包含在分组中group af by new { af.Name, af.AgileFactorID} into tagGroup
这应该允许您访问AgileFactorID的值,但只能通过引用它来像
select new { AgileFactorID = tagGroup.Key.AgileFactorID}
同样,由于分组,psf不再在范围内。 (这也忽略了psf.Count()没有意义的事实。)
最终查询也令人困惑。第一个查询上的select表示它应该(如果有效)提供一个返回两个字段即ID和Total的查询。它不会返回任何名为AgileFactorID或Name的内容。
我从问题中假设你正在学习LINQ,所以你可能会发现this问题中提到的一些资源很有帮助。