我收集了来自数据库中两个表的 Id。这两个对象都有一个我需要的共同属性。我将始终只选择此属性,但我的问题是:
将 Id 的集合分成两部分并从数据库进行两个查询或使用循环并从数据库中一个接一个地获取每个对象是否更好?
第一种方法
List<byte[]> binariesToAttach = new List<byte[]>();
IEnumerable<someObj> Type1objects = toAppend.Where(a => a.Type == FileType.Type1Obj).Select(f => f.Id);
IEnumerable<someObj> Type2objects = toAppend.Where(a => a.Type == FileType.Type2Obj).Select(f => f.Id);
binariesToAttach.AddRange(this.UnitOfWork.Example1Repository.Get(s => Type1objects.Any(a => s.Id == a)).Select(f => f.Content));
binariesToAttach.AddRange(this.UnitOfWork.Example2Repository.Get(s => Type2objects.Any(a => s.Id == a)).Select(f => f.Content));
foreach (var item in binariesToAttach)
{
// TODO something
}
或第二种方法:
foreach (var item in toAppend)
{
if (item.Type == FileType.Type1Obj)
{
byte[] data = this.UnitOfWork.Example1Repository.Get(a => a.Id == item.Id).Select(a => a.Content).FirstOrDefault();
// TODO something
}
else
{
byte[] data = this.UnitOfWork.Example2Repository.Get(a => a.Id == item.Id).Select(a => a.Content).FirstOrDefault();
// TODO something
}
}
就我个人而言,我认为第二种方法更容易理解,这就是我更喜欢他的原因。但如果第一个更优化的话..
SMILET
相关分类