难以理解 => Lambda 运算符 C#



我对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将是属性的一个实例。

最新更新