此代码有效,但速度非常慢。我正在使用 Entity Framework 5.0。因此,仅使用 Linq 或 Lambda,我如何组合这两段代码以返回 List<Entity> e
?
CMSEntities c = new CMSEntities();
var p = c.Entities.Where(
x => x.Address != null
&& x.Address.AddressType != null
&& x.Address.AddressType.AddressTypeID == 1
&& x.Tags.FirstOrDefault() != null)
.ToList();
List<Entity> e = new List<Entity>();
foreach (var a in p)
{
var d = a.Tags.Where(y => y.Feature.FeatureID == 39).FirstOrDefault();
if (d != null)
{
e.Add(a);
}
}
最佳答案
var e = c.Entities.Where(
x => x.Address != null
&& x.Address.AddressType != null
&& x.Address.AddressType.AddressTypeID == 1
&& x.Tags.FirstOrDefault(y => y.Feature.FeatureID == 39) != null
).ToList();
您可以直接在一个查询中完成。但我不知道它是否会产生很大的速度差异。
根据 Jon 在评论中的建议,使用 Any
而不是 FirstOrDefault
会更好读。喜欢:
var e = c.Entities.Where(
x => x.Address != null
&& x.Address.AddressType != null
&& x.Address.AddressType.AddressTypeID == 1
&& x.Tags.Any(y => y.Feature.FeatureID == 39)
).ToList();
关于c# - 仅使用 Linq 或 Lambda,如何组合这两段代码以返回 List<Entity> e?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19480088/