C# 将Linq实体与Datatable连接

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

我想用linq实体连接数据表。这是代码,希望你能完全理解我在这里试图用代码做什么

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;