LINQ查询同桌

时间:2014-10-28 15:24:10

标签: c# linq

我正在尝试查找发票号码相同但有不同城市的所有行。

运行此代码时,我无法将类型'System.Collections.Generic.IEnumerable'隐式转换为'bool'错误。

from DataRowView i in dv
where 
(
  from DataRowView s in dv
  where 
    i.Row["InvoiceNo"] == s.Row["InvoiceNo"] && 
    i.Row["City"] != s.Row["City"]
  select s
)
select i;

所以在一组数据上,如{123,西雅图,...},{123,西雅图,...},{123,波特兰,......}我只想要一个(在这种情况下){123 ,波特兰,...}将被退回。

我不确定我做错了什么......

2 个答案:

答案 0 :(得分:4)

where后面需要一个布尔值,表示是否应该包含该项。您提供了一系列行。这并不能告诉where是否应该包含该项目。

您显然正在尝试加入此表格,最好使用Join,然后在已加入的结果上应用过滤器:

var query = from first in dv
    join second in dv
    on first.Row["InvoiceNo"] equals second.Row["InvoiceNo"]
    where first.Row["City"] != second.Row["City"]
    select first;

答案 1 :(得分:1)

where ()期待bool

from DataRowView s in dv ... select s正在返回IEnumerable<DataRowView>

从您的( )开始,您需要为该查询返回bool才有意义。