我目前想要从具有各种字段的DataTable对象中选择各种记录,但我想要排除其CustomerID存在于另一个DataTable中的记录。或多或少喜欢使用"除了"或" NOT IN" SQL中的子句。在SQL中将是
SELECT * FROM Table1 WHERE CustomerID Not In (SELECT CustomerID FROM Table2)
我希望将结果集放在另一个DataTable中。
这就是我所拥有的:
var test = (from dt1 in lastMonthFunded.AsEnumerable()
select new { CustomerId = dt1.Field<int>("CustomerId"),
LoanNumber = dt1.Field<Int32>("LoanNumber") })
.Except(from dt2 in lastYearFunded
select new {customerNum=dt2.Field<Int32>("LoanNumber")});
Visual Studio显示以下消息:
错误1实例参数:无法转换为&#39; System.Data.EnumerableRowCollection&#39;到了System.Linq.IQueryable&#39;
错误2&#39; System.Data.EnumerableRowCollection&#39;不包含&#39;除外&#39;的定义和最好的扩展方法重载&#39; System.Linq.Queryable.Except(System.Linq.IQueryable,System.Collections.Generic.IEnumerable)&#39;有一些无效的论点
答案 0 :(得分:0)
只要您的对象依赖于IQUeryable或IEnumerable类,您就应该能够使用Linq:
var test = from dt1 in lastMonthFunded
where !(from d2 in LastYearFunded
select d2.LoanNumber).Contains(dt1.LoanNumber)
select dt1;
使用上述LINQ,您将能够获得LastYearFunded中不存在的所有lastMonthFunded记录。