使用LINQ处理XML文件,以通过数据上下文将记录添加到SQL Server数据库的表中。当我们添加记录时,我们需要在其他各种表中分配父项。大多数情况下,我们可以找到现有的父级并使用它,但有时我们需要创建一个新的父级。
我们可以这样做:
Dim defaultPub As publication defaultPub = New publication With {.name = e..Value} Dim pub = _Data.publications.Where(Function(s) s.name = e..Value).DefaultIfEmpty(defaultPub).SingleOrDefault .publication = pub
所以我们试图找到一个与我们的XML匹配e..Value的出版物,但是如果我们找不到,那么我们使用'defaultPub'。如果确实存在,但我们不想再添加它。所以,即使它确实有效,也许这种方法存在缺陷......
无论如何它目前无法正常工作,我们收到此错误: 用于查询运算符'DefaultIfEmpty'的不支持的重载。
重载需要一个发布并且正在获取一个(我已经在quickwatch中检查了TypeNames),不知道这里发生了什么。
我们真正需要的是类似于来自activerecord for Ruby的find_or_create,LINQ似乎是从中复制的。
提前致谢,
戴夫。
答案 0 :(得分:-1)
好的,我可以这样做:
Dim pub = _Data.publications.Where(Function(s) s.name = e.<source>.Value).SingleOrDefault
Dim newPub As publication
If Not IsNothing(pub) AndAlso pub.name <> "" Then
.publication = pub
Else
newPub = New publication With {.name = e.<source>.Value}
.publication = newPub
End If
感谢Val!