1

我想返回一个有一些关系的数据集,查询没问题,但我从另一个表中得到了 ID 而不是实际值......这是查询

        var thr=
            from u in dc.thresholds
            select u;

这将返回如下内容:

id: 1
name: some name
type_id: 1
owner_id: 1

我想用这些表的值获取 type_id 和 owner_id ,所以它可以是这样的:

id: 1
name: some name
type_id: Danger
owner_id: John Smith

我希望你们中的一些人能给我一些建议,我从 LINQ to SQL 开始,我有点迷茫......

谢谢

4

2 回答 2

0

如果你想显示 type_id(type_name in other table) 的名称值,你应该像这样使用 join:

var thr=
            from u in dc.thresholds
        join y in dc.yourTable on u.type_id equal y.type_id
        select new{u.id,u.name,typeName=y.name,....};
于 2012-10-30T05:52:25.013 回答
0

根据需要使用导航属性加载数据。如果导航属性不存在(Threshold.Type 和 Threshold.Owner),请打开您的 dbml 并添加关联。

懒惰地使用导航属性会导致额外的查询。

List<Threshold> result = dc.Thresholds.ToList();  //run first query

foreach(Threshold t in result)
{
  Type type = t.Type;  //run second query (per row)
  Owner owner = t.Owner; //run third query (per row)
}

使用 DataLoadOptions 在查询期间急切地加载相关数据。

DataLoadOptions options = new DataLoadOptions();
options.LoadWith<Threshold>(t => t.Type);
options.LoadWith<Threshold>(t => t.Owner);

dc.LoadOptions = options;

List<Threshold> result = dc.Thresholds.ToList();  // run query

foreach(Threshold t in result)
{
  Type type = t.Type;  //these values are already loaded by this point.
  Owner owner = t.Owner;
}

编写查询以加载所需形状的数据

var query =
  from t in dc.Thresholds
  let type = t.Type
  let owner = t.Owner
  select new {Threshold = t, Type = type, Owner = owner};

var result = query.ToList();  //run query

foreach(var x in result)
{
  Threshold t = x.Threshold;
  Type type = x.Type;  //might be null.
  Owner owner = x.Owner;  //might be null.
}
于 2012-10-30T14:33:06.530 回答