Linq to sql linq to sql我如何才能得到一些没有';与现有行不匹配?
我有几行数据通过linq到sql从大型表拉入业务对象 现在我想得到一些不匹配的行来测试我的比较函数 使用我认为有效的方法,我得到一个NotSupportedException: 除了Contains()运算符外,查询运算符的LINQ to SQL实现中不能使用局部序列 代码如下:Linq to sql linq to sql我如何才能得到一些没有';与现有行不匹配?,linq-to-sql,.net-3.5,Linq To Sql,.net 3.5,我有几行数据通过linq到sql从大型表拉入业务对象 现在我想得到一些不匹配的行来测试我的比较函数 使用我认为有效的方法,我得到一个NotSupportedException: 除了Contains()运算符外,查询运算符的LINQ to SQL实现中不能使用局部序列 代码如下: //This table has a 2 field primary key, the other has a single var AllNonMatches = from c in dc.Acaps wher
//This table has a 2 field primary key, the other has a single
var AllNonMatches = from c in dc.Acaps
where !Matches.Rows.Any((row) => row.Key.Key == c.AppId & row.Key.Value == c.SeqNbr)
select c;
foreach (var item in AllNonMatches.Take(100)) //Exception here
{}
该表有一个复合主键:AppId和SeqNbr
Matches.Rows定义为keyvaluepair(appid,seqnbr)的字典
它所指的本地序列似乎是本地字典。您能否提供有关plz表的结构和名称的更多信息 不知道你想做什么 编辑: 好的。。我想我现在明白了 似乎无法将本地表(字典)与SQL表合并/联接。 如果可以的话,恐怕我不知道怎么做 我能想到的最简单的解决方案是将这些结果放在一个表中(例如“Match”),其中包含与表“Acaps”相关的外键,然后使用linq to sql,如:
var AllNonMatches = dc.Acaps.Where(p=>p.Matchs==null).Take(100).ToList();
对不起,我想不出更好的=(这个怎么样:
var AllNonMatches = from c in dc.Acaps
where !(Matches.Rows.ContainsKey(c.AppId) && Matches.Rows.ContainsValue(c.SeqNbr))
select c;
这很好。我还使用了位AND运算符(&&&)-我认为这是一个正确的术语,有助于提高标准AND运算符的性能。但有一种情况是不正确的-假设我们在匹配中有两个相关项:(a,B)和(C,D)。我们目前正在选择一个类似(a,D)的项。虽然此项不存在于匹配项中(因此应选中),但不会返回,因为两个值都存在于匹配项中(虽然不在同一项上)。这取决于询问者需要什么-此解决方案可能足够。此外,我怀疑ContainsKey()和ContainsValue()是否有效。您可能需要使用Keys.Contains()和值。包含()。