我想将数据表与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;
答案 0 :(得分:2)
您可以使用join,但这需要将所有温度计类型加载到客户端(假设站点ID具有整数类型):
var query = from t in db.TempR_ThermometerType.AsEnumerable()
join r in dbc.AsEnumerable()
on t.SiteID equals r.Field<int>("SiteId")
select t;
或者您可以使用温度计类型的服务器端过滤,但在这种情况下,您需要将站点ID传递给服务器 - 它将生成SQL运算符IN):
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;