答案 0 :(得分:0)
你想要像
这样的东西 var result = questions.OrderByDescending(i => i.id).Take(5).Union(education.OrderByDescending(i => i.id).Take(5));
答案 1 :(得分:0)
在LINQ中,您无法连接两个具有o关系的表,这将需要执行查询。你最好做两个LINQ to SQL查询,将每个表的最后10个选择成类似的结构,然后进行这两个枚举,做一个联合并取最后10个。
如果您使用的结构如下:
public struct QuestionsEducationsJoin
{
public DateTime date;
public int QuestionID;
public string Question;//...;
public int EducationID;
public string Education;//...;
}
然后,您可以从两个表中选择此结构:
var questionEnumeration = database.Questions
.OrderByDescending(question => question.DateField)
.Take(10)
.Select(question => new QuestionsEducationsJoin()
{
date = question.DateField;
//...
});
var educationEnumeration; //...
var outputEnumeration = questionEnumberation
.Union(educationEnumeration)
.OrderByDescending(x => x.date)
.Take(10);
答案 2 :(得分:0)
答案取决于您是否需要结果列表是多态的(共享公共接口的对象列表,公开要操作的公共属性)或者您不容易知道如何的简单对象列表铸造。
如果您想要使用两者共有的字段,请创建这些公共属性的接口,并让两个类都实现该接口。例如,界面可能是
Interface iBrainStuff
{
public DateTime DateCreated;
public int AreaOfExpertise;
public string Description;
}
然后,您只需在每个类中实现接口:
public class question: iBrainStuff
public class education: iBrainStuff
然后您创建结果列表
List<iBrainStuff> results = new List<iBrainStuff>();
然后你
results.AddRange(context.educations.OrderByDescending(x => x.DateCreated).Take(5);
results.AddRange(context.questions.OrderByDescending(x => x.DateCreated).Take(5);
这会将前十名(每名5名)列入结果列表。结果列表中的结果都可以查询其iBrainStuff接口字段:
Interface iBrainStuff
{
public DateTime DateCreated;
public int AreaOfExpertise;
public string Description;
}