我可以在诊断以下内容时获得帮助吗?
IQueryable<MyComponentsViewModel> vcvm = from v1 in pg.MyComponents
join item in Items on v1.Item equals item into vc
select new MyComponentsViewModel
{ Cost = item.Cost };
出现以下错误:
错误CS1941:join子句中的表达式之一的类型为 不正确调用“ GroupJoin”时类型推断失败。
由于item与v1.Item类型不同,是否发生此错误状态?
按键如下所示
ALTER TABLE [dbo].[MyComponents] WITH CHECK ADD CONSTRAINT
[FK_MyComponents_Items] FOREIGN KEY([ItemId])
REFERENCES [dbo].[Items] ([Itemid])
GO
ALTER TABLE [dbo].[MyComponents] CHECK CONSTRAINT [FK_MyComponents_Items]
答案 0 :(得分:1)
我假设您需要内部连接,而在做相等操作时,则需要使用其匹配的列ID来过滤记录,如下所示
IQueryable<MyComponentsViewModel> vcvm =
from myComp in pg.MyComponents
join item in Items on myComp.ItemId equals item.Id
select new MyComponentsViewModel { Cost = item.Cost };
答案 1 :(得分:1)
我能够使其正常工作。
名为“项”的动作之间存在歧义。完全指定名称空间即可解决此问题。 另外,我还必须添加语句“来自vc.DefaultIfEmpty中的子项目”
我仍在努力学习它的全部语义
IQueryable<MyComponentsViewModel> vcvm =
from v1 in pg.MyComponents
join item in pg.Items on v1.Item equals item into vc
from subitem in vc.DefaultIfEmpty()
select new MyComponentsViewModel { Cost = subitem.Cost };