C# 将Linq实体与Datatable连接
我想用linq实体连接数据表。这是代码,希望你能完全理解我在这里试图用代码做什么C# 将Linq实体与Datatable连接,c#,sql,linq,entity-framework,C#,Sql,Linq,Entity Framework,我想用linq实体连接数据表。这是代码,希望你能完全理解我在这里试图用代码做什么 var db = new TempR_ClientRCEntities(); DataTable dbc = GetAllSites(); List<object> temp = dbc.AsEnumerable().ToList<object>(); var thermoTypes = from type in db.TempR_ThermometerType
var db = new TempR_ClientRCEntities();
DataTable dbc = GetAllSites();
List<object> temp = dbc.AsEnumerable().ToList<object>();
var thermoTypes = from type in db.TempR_ThermometerType
join site in dbc on type.SiteID equals dbc.SiteId
select type;
var db=new TempR_clientrcenties();
DataTable dbc=GetAllSites();
List temp=dbc.AsEnumerable().ToList();
var thermoTypes=来自db.TempR_温度计类型中的类型
在dbc中加入类型为.SiteID等于dbc.SiteID的站点
选择类型;
您可以使用join,但这需要将所有温度计类型加载到客户端(假设站点id具有整数类型):
var query=来自t,单位为db.TempR\u温度计类型.AsEnumerable()
在dbc.AsEnumerable()中加入r
t.SiteID等于r.Field(“SiteID”)
选择t;
或者,您可以使用温度计类型的服务器端筛选,但在这种情况下,您需要将站点ID传递给服务器-它将在中生成SQL运算符):
var id=dbc.AsEnumerable().Select(r=>r.Field(“SiteId”)).Distinct();
var query=来自t,单位为db.TempR\u温度计类型
其中ids.Contains(t.SiteID)
选择t;
现在我在从db.TempR_温度计类型中的类型转换themvar thermoTypes=时遇到问题。在type.SiteID等于r.Field(“Comp_CompanyId”)上,AsEnumerable()选择新的{type,SiteName=r.Field(“Comp_Name”)@xainu31数据库和datatable中的站点id类型是什么?@xainu31您的代码与您的问题中的代码不同。它无法工作,因为您试图将具有两个属性的匿名类型与integer进行比较。42
等于{type,“Microsoft”}
?问题是什么?
var query = from t in db.TempR_ThermometerType.AsEnumerable()
join r in dbc.AsEnumerable()
on t.SiteID equals r.Field<int>("SiteId")
select t;
var ids = dbc.AsEnumerable().Select(r => r.Field<int>("SiteId")).Distinct();
var query = from t in db.TempR_ThermometerType
where ids.Contains(t.SiteID)
select t;