我有两个表(tbPerson和tbDataLog),我需要在检查两个表上的某些条件后从一个表(tbPerson)返回Id。在此之后,此结果应传递给另一个查询。我的第一个查询成功返回Id(表的主键),我需要将这些ID传递给另一个查询,以便它根据这些Id返回数据。我还有一个IQueryable类型基础对象来检查获取数据的某些条件。
IQueryable<tbPerson> dataset
我无法将其从Iqueryable更改为其他,因为它会破坏代码的其他部分)
我的第一个linq声明:
public static IQueryable<LogResults> GetResultsForYes()
{
Databasename ents = new Databasename();
var ids = (from f in ents.tbPerson
join g in ents.tbDataLog
on f.InfoID equals g.RefId
where g.Tag == "subscribed" && g.OldValue == "No" && g.Action == "Modified"
select new LogResults { _LogID = f.Id }).OrderBy(x => x._LogID);
return ids;
}
public class LogResults
{
public int _LogID { get; set; }
}
我访问我的结果,我可以在调试器中看到所有的ID。
IQueryable<LogResults> log = GetResultsForYes();
当我尝试根据这些返回的Id从tbPerson获取记录时出现问题。
dataset=log.where(x=>x._LogID != 0);
我收到此错误:
无法隐式转换类型System.Linq.IQueryable&#39;到了System.Linq.IQueryable&#39;。存在显式转换(您是否错过了演员表)?
欢迎任何建议或其他好方法。
答案 0 :(得分:0)
IQueryable<tbPerson> dataset=log.where(x=>x._LogID != 0);
log.where(x =&gt; x._LogID!= 0)的结果是IQueryable<LogResults>
,您尝试将此结果分配给类型为{{的 dataset 1}},两种不同的类型。
编辑:
我看到你联系获取tbPerson id,然后你做第二个查询来获取这些人。你可以在第一次加入时获得这些人。
我只是修改你的代码:
IQueryable<tbPerson>
答案 1 :(得分:0)
我喜欢stackoverflow这个东西。当我们写问题时,我们迫使我们的大脑更深入地思考,在发布这个问题30分钟后,我以一种简单的方式解决了这个问题。有时候我们过于复杂化了!
a b c
7 7 15
3 4 7
6 6 13
@ankit_sharma:我没有测试过你的,但会试一试并回复你。感谢您给予时间和精力。