使用Datatable加入Linq实体

时间:2013-12-06 12:27:52

标签: 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
                  join site in dbc on type.SiteID equals dbc.SiteId
                  select type;

1 个答案:

答案 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;