我正在尝试查找发票号码相同但有不同城市的所有行。
运行此代码时,我无法将类型'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 ,波特兰,...}将被退回。
我不确定我做错了什么......
答案 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
才有意义。