0
웹 API에 대해이 코드를 작성할 수 있습니다. 이 코드에서는 견인 쿼리를 작성하고 주석과 추종자 데이터를 ctime 및 startsfollowing을 기준으로 시간을 기준으로 병합 (결합하지 않음)하는 방식으로 결합했습니다. 사용자가 새로운 코멘트를 가지고 있다면, 코멘트가 가장 먼저오고, 추종자가 첫 번째라면, 추종자 데이터가 먼저 와야합니다.linq 쿼리를 사용하는 동안 런타임 오류
public IQueryable<Object> GetCommentsandFollowActivityCommnets()
{
var combo1 = from c in db.comments
join p in db.picturedetails on c.targetpictureid equals p.idpictures
join u in db.users on c.iduser equals u.iduser
select new TCommentDTO
{
idcomments=c.idcomments,
comment1 = c.comment1,
targetpictureid = c.targetpictureid,
ctime = c.ctime,
iduofpic=p.iduser,
iduofcommentor=c.iduser,
profilepicofcommentor=u.profilepic,
usernameofcommentor=u.username,
picFilename=p.picFilename,
picTitle=p.picTitle
};
var combo2= from f in db.followers
join u in db.users on f.iduser equals u.iduser
select new TfollowerDTO
{
idfollowers=f.idfollowers,
iduser=f.iduser,
targetiduser=f.targetiduser,
startedfollowing=f.startedfollowing,
unoffollower=u.username,
ppoffollower=u.profilepic,
status=u.status
};
var result1 = from c in combo1
select new UserTimeLineDTO
{ SortKey = c.ctime, Member =c};
var result2 = from c in combo2
select new UserTimeLineDTO{ SortKey = c.startedfollowing, Member = c };
var result = result1.Concat(result2).OrderBy(x =>x.SortKey).Select(x => x.Member);
return result;
}
코드가 컴파일 타임 오류를 나타내지 않습니다. 그것은 컴파일러에서 잘 실행되지만 런타임에 예외가 발생합니다 :
DbUnionAllExpression requires arguments with compatible collection ResultTypes.
이 예외를 제거하는 방법?
작동 원리, 이유를 설명해주세요. – Obvious
.ToList는 평가를 강제 실행하고 객체를 메모리에 구체화합니다. 이 방법으로 Concat은 데이터베이스 측이 아닌 메모리에서 평가됩니다. –