使用linq-to-sql,有没有办法指定两个ORM实体的产品类型?像,
internal IQueryable<???> GetFooBarQuery(DataContext context)
{
return
from foo in foos
join bar in bars on ...
select new { foo, bar };
}
仅???
是与进一步查询优化兼容的类型,new { foo, bar }
替换为等效的???
类型。
答案 0 :(得分:2)
您不能直接返回匿名类型,因为类型仅在编译时定义。 您应该创建一个类来保存您的数据(DTO)。
internal class FooBarDto
{
public Foo Foo { get; set; }
public Bar Bar { get; set; }
}
internal IQueryable<FooBarDto> GetFooBarQuery(DataContext context)
{
return
from foo in foos
join bar in bars on ...
select new FooBarDto{ Foo = foo, Bar = bar };
}
答案 1 :(得分:2)
你可以尝试使用dynamic或object作为返回类型,但是我认为最好的解决方案是为返回类型创建一个新类,而不是动态创建返回对象只返回新创建的类型的新实例。
您可以将来自两个查询的数据合并到一个对象中,该对象可以包含两个公共属性,每个对象来自查询的返回类型
public class ExampleClass
{
public foo myFooObject { get; set; }
public bar myBarObject { get; set; }
}
select new ExampleClass { foo = something, bar = something };