我已经遍布谷歌,但无法找到解决问题的正确方法。 我有一个包含2个不同表的连接结果,总共有30多个字段。很明显,我可以手动输入每个字段,如下所示:
dbcontext.table1s.join(dbcontext.table2s,x=>table1ID,y=>table2ID, (x,y)=> new someTempClass {field1=x.field1,field2=x......})
我找到了这个链接,这就是我要找的东西。但是,如果匿名类型看起来像{x}或{y}而不是{x,y.field1},它似乎工作正常 http://www.palmmedia.de/blog/2012/2/18/aspnet-mvc-generic-filtering-based-on-expressions
我真的只需要table2中的一个字段。
答案 0 :(得分:0)
我猜您使用的是Entity Framework,因此如果您想从实体中选择特定列并将它们投影为匿名或强类型,您可以使用投影查询。
// first we create a new class to contain less fields
public class PostRow
{
public int Id { get; set; }
public string Title { get; set; }
}
// returns posts with only the Id and Title
var posts = context.Posts.Select(p => new PostRow
{
Id = p.Id,
Title = p.Title
}).ToList();
https://www.talksharp.com/entity-framework-projection-queries
答案 1 :(得分:0)
您可以创建包含两种类型的匿名类型。 像这样:
var collection = dbcontext.table1s.join(
dbcontext.table2s,
x=>table1ID,
y=>table2ID,
(x,y)=> new
{
X = x,
Y = y
});
然后,您可以通过匿名类型访问这些字段。例如:
collection[0].X.field1
collection[0].Y.field2