实体框架4.1:如何在选择中执行子查询

时间:2011-10-27 17:00:57

标签: entity-framework linq-to-entities entity-framework-4.1 subquery

我正在尝试使用Entity Framework 4.1 Code First:

执行以下操作
Select c1,
       c2,
       (select v1 from table2 where id = c3) as col3
from table1

非常感谢任何帮助。

修改

例如,假设我在数据库中有两个表,

LookupValues [ID,Code,DescResourceID]

资源[ResourceID,Culture,Value]

DescResourceID和ResourceID是外键。

所以我想为...创建配置或映射。

public partial class LookupValues
{
  public virtual string ID;
  public virtual string Code;
  public virtual string Description;
}

如上所述,描述映射到subquery

2 个答案:

答案 0 :(得分:1)

您可以尝试这样的事情:

var query = from x in context.Table1 
            let z = context.Table2
                           .Where(y => y.Id == c3)
                           .Select(y => y.V1).FirstOrDefault()
            select new
                {
                    C1 = x.C1,
                    C2 = x.C2,
                    C3 = z
                };

答案 1 :(得分:0)

我会创建一个实体模型并使用LINQ。

我假设您在使用Entity Framework时知道LINQ是什么。

假设您有一个类似以下的数据结构;

产品和产品有(第1栏,第2栏,第3栏) Categories和Categories键具有Column3,它与Products.Column3

等效

执行以下操作;

var categories_Column3 = List<Categories>().Select(c => c.Column3 == some value);
var products_Column3_Query = List<Products>().Select(c => c.Column3 == categories_Column3).ToList<value_type_of_column3>();

当然,这只是一些假的代码,因为我想确保你掌握LINQ,并意识到你可以使用Entity Framework在LINQ中做你想做的事情,因为OR / MI现在会指向你以下网站,它应该为您提供有关LINQ的详尽教程。

http://weblogs.asp.net/scottgu/archive/2007/05/19/using-linq-to-sql-part-1.aspx

希望这有帮助!

快乐的编码! ;)