【问题标题】:Invalid cast exception: trying to join two tables using linq-sql无效的强制转换异常:尝试使用 linq-sql 连接两个表
【发布时间】:2014-09-18 15:26:23
【问题描述】:

我正在尝试使用它们的共同 id 连接两个表,即 MOTHERID。但他下面的代码工作正常,但在某些时候它开始在以下位置抛出“无效的强制转换异常”:

 var firstQuery = (from s in _maternalvisitvaluedb.Value select s).ToList();

我认为异常是由 toList() 转换引起的,因为当我删除 .ToList() 时它工作正常,但我需要使用它来让其余代码正常工作。以下是部分代码:

MaternalVisitData _maternalvisitvaluedb =
new  MaternalVisitData(MaternalVisitData.strConnectionString);
MaternalCareData _maternalcarevaluedb = 
new MaternalCareData(MaternalCareData.strConnectionString);

var firstQuery = (from s in _maternalvisitvaluedb.Value select s).ToList();
var secondQuery = (from t in _maternalcarevaluedb.Value select t).ToList();

var result = (from s in firstQuery
join k in secondQuery
on s.MotherId equals k.MotherId
where (DateTime)s.SecondVisit.Date == DateTime.Now.Date 
select s).ToList();

感谢您的帮助!

【问题讨论】:

    标签: c# linq join


    【解决方案1】:

    在下面的行中尝试特定类型的 var 替代:

    var firstQuery = (from s in _maternalvisitvaluedb.Value select s).ToList();
    var secondQuery = (from t in _maternalcarevaluedb.Value select t).ToList();
    

    像这样:

    List<maternalvisitvaluedb> firstQuery = (list<maternalvisitvaluedb>)(from s in _maternalvisitvaluedb.Value select s).ToList();
    List<maternalcarevaluedb> secondQuery = (List<maternalcarevaluedb>)(from t in _maternalcarevaluedb.Value select t).ToList();
    

    这是一个伪命题,希望对你有帮助

    【讨论】:

    • 我已经尝试过了,数据上下文majorvisitvaluedb 和maternalcarevaluedb 不认为它们是有效的数据类型。
    • 我知道它们不是有效的数据类型,请将它们更改为您正在使用的有效数据类型
    • 我已更改为它的有效数据类型,但它仍然抛出无效的强制转换异常。
    • 1.这些表有关系吗?如果有,请检查它们是否为空。 2.motherid是主键吗?如果不检查不为空。
    猜你喜欢
    • 1970-01-01
    • 2010-11-04
    • 1970-01-01
    • 1970-01-01
    • 2012-02-20
    • 1970-01-01
    • 1970-01-01
    • 2012-09-21
    • 1970-01-01
    相关资源
    最近更新 更多