많은 사람들이 이미 존재할 때 LINQ 하나에서 많은 삽입물을 삽입합니다
문제
그래서 나는 LINQ를 처음 사용하므로 내가하는 일이 완전히 바보 일 수 있습니다!
나는 선포의 테이블과 많은 반란을 가진 서비스 테이블을 가지고 있습니다.
사례 연구는 이미 존재하며 이미 존재하는 일부 사례 연구를 연결하는 동안 서비스를 삽입하려고합니다. 나는 이런 일이 효과가 있다고 가정했다.
Service service = new Service()
{
CreateDate = DateTime.Now,
CreatedBy = (from u in db.Users
where u.Id == userId
select u).Take(1).First(),
Description = description,
Title = title,
CaseStudies = (from c in db.CaseStudies
where c.Name == caseStudy
select c),
Icon = iconFile,
FeatureImageGroupId = imgGroupId,
UpdateDate = DateTime.Now,
UpdatedBy = (from u in db.Users
where u.Id == userId
select u).Take(1).First()
};
그러나 이것은 불평하기 때문에 정확하지 않습니다
'system.linq.iqueryable'유형을 암시 적으로 변환 할 수 없습니다.
누군가 나에게 올바른 방법을 보여줄 수 있습니까?
미리 감사드립니다
해결책
쿼리 결과를 교체하려는 대신 사례 연구 컬렉션에 쿼리 결과를 추가해야합니다.
var service = new Service { ... };
foreach (var caseStudy in db.CaseStudies.Where(s => s.Name == caseStudyName)
{
service.CaseStudies.Add(caseStudy);
}
이것을 확장 방법으로 래핑하고 멋진 구문을 얻을 수 있습니다.
public static class ExtensionMethods
{
public static void AddRange<T>(this EntityCollection<T> entityCollection,
IEnumerable<T> entities)
{
// Add sanity checks here.
foreach (T entity in entities)
{
entityCollection.Add(entity);
}
}
}
그리고 이제 당신은 다음을 얻습니다.
var service = new Service { ... };
service.CaseStudies.AddRange(db.CaseStudies.Where(s => s.Name == caseStudyName));
제휴하지 않습니다 StackOverflow