我对lambda operator =>有一般的理解,但是我根本不明白变量z,c,s的 properties properties 如z.name(。我不了解某些对象类型的推理魔术发生。
public class DbReadService : IDbReadService
{
private VODContext _db;
public DbReadService(VODContext db)
{
_db = db;
}
private (IEnumerable<string> collections, IEnumerable<string> references) GetEntityNames<TEntity>() where TEntity : class
{
var dbsets = typeof(VODContext).GetProperties(BindingFlags.Public | BindingFlags.Instance)
.Where(z => z.PropertyType.Name.Contains("DbSet"))
.Select(z => z.Name);
var properties = typeof(TEntity).GetProperties(BindingFlags.Public | BindingFlags.Instance);
var collections = properties.Where(l => dbsets.Contains(l.Name)).Select(s => s.Name);
var classes = properties.Where(c => dbsets.Contains(c.Name + "s")).Select(s => s.Name);
return (collections: collections, references: classes);
}
}
linq函数在通用iEnumerable上操作。当您在IEnumerable上调用任何LINQ函数时list.here(c => c.variable(,c将是某个实例的实例。
在您的示例中,我假设"属性"是属性的列表或数组,因此,C将是属性的一个实例。