Ответы пользователя по тегу .NET
  • Как в рантайме изменять лямбда выражение?

    isxaker
    @isxaker Автор вопроса
    public class Person
    {
        public bool FirstNameIsActive { get; set; }
        public bool SecondNameIsActive { get; set; }
    }
    
    public List<Person> list = new List<Person>() { 
        new Person() { 
            FirstNameIsActive = true, 
            SecondNameIsActive = false 
        }, 
        new Person() { 
            FirstNameIsActive = false, 
            SecondNameIsActive = true 
        } 
    };
    
    private IQueryable<Person> Filter(PropertyInfo property, bool isActive)
    {
        IQueryable<Person> queryableData = list.AsQueryable<Person>();
        //create input parameter
    	ParameterExpression inputParam = Expression.Parameter(typeof(Person));
    	//left contition
        Expression left = Expression.Property(inputParam, property);
        //right condition
        Expression right = Expression.Constant(isActive, typeof(bool));
        //equals
        Expression e1 = Expression.Equal(left, right);
        //create call
        MethodCallExpression whereCallExpression = Expression.Call(
                                                                typeof(Queryable),
                                                                "Where",
                                                                new Type[] { queryableData.ElementType },
                                                                queryableData.Expression,
                                                                Expression.Lambda<Func<Person, bool>>(e1, new ParameterExpression[] { inputParam }));
        //execute and return
        return queryableData.Provider.CreateQuery<Person>(whereCallExpression);
    }
    
    private void test()
    {
    	Filter(typeof(Person).GetProperty("FirstNameIsActive"), true);
        Filter(typeof(Person).GetProperty("SecondNameIsActive"), true);
    }
    Ответ написан
    Комментировать
  • Как в рантайме изменять лямбда выражение?

    isxaker
    @isxaker Автор вопроса
    //property selector
    Func<Person, Boolean> propertySelector = person => person.FirstNameIsActive;
    
    //your predicate
    Func<Person, Boolean> predicate = person => propertySelector(person) == true;
    
    //new person with true, false properties.
    Person p = new Person() {FirstNameIsActive = true,SecondNameIsActive = false};
    
    Console.WriteLine(predicate(p).ToString()); //prints true
    
    //change the property selector
    propertySelector = person => person.SecondNameIsActive;
    
    //now the predicate uses the new property selector
    Console.WriteLine(predicate(p).ToString()); //prints false
    Ответ написан
    Комментировать
  • Asp.net MVC Upload file & save data?

    isxaker
    @isxaker
    У меня работает следующий код

    Model

    public class Book
    {
         public string Title {get;set;}
         public string Author {get;set;}
    }
    
    


    Controller

    public class BookController : Controller
    {
         [HttpPost]
         public ActionResult Create(Book model, IEnumerable<HttpPostedFileBase> fileUpload)
         {
             throw new NotImplementedException();
         }
    }
    
    


    And View

    @using (Html.BeginForm("Create", "Book", FormMethod.Post, new { enctype = "multipart/form-data" }))
    {      
         @Html.EditorFor(m => m)
    
         <input type="file" name="fileUpload[0]" /><br />      
         <input type="file" name="fileUpload[1]" /><br />      
         <input type="file" name="fileUpload[2]" /><br />      
    
         <input type="submit" name="Submit" id="SubmitMultiply" value="Upload" />
    }
    
    


    Для того, чтобы файлы передались на сервер, нужно чтобы name у

    <input type="file" name="fileUpload[0]" />

    совпадал с именем параметра контроллера

    IEnumerable<HttpPostedFileBase> fileUpload
    Ответ написан
    Комментировать
  • Получить название схемы для каждого entity объекта?

    isxaker
    @isxaker Автор вопроса
    Вот так я сумел получить название схемы

    using (WdmEntities context = new WdmEntities())
    {
        //get object models from context
        ObjectContext objContext = ((IObjectContextAdapter)context).ObjectContext;
        //get all full names types from object model
        var fullNameTypes = objContext.MetadataWorkspace.GetItems<EntityType>(DataSpace.OSpace);
        ///////////////////
        var conStr = objContext.Connection.ConnectionString;
        var connection = new EntityConnection(conStr);
        var workspace = connection.GetMetadataWorkspace();
    
        var entitySets = workspace.GetItems<EntityContainer>(DataSpace.SSpace).First().BaseEntitySets;
                    
        for (int i = 0; i < fullNameTypes.Count; i++)
        {
            Type type = Type.GetType(fullNameTypes[i].FullName);
            string schema = entitySets[type.Name].MetadataProperties["Schema"].Value.ToString();   
        }
    }
    
    Ответ написан
    Комментировать
  • OpenSource проекты на ASP.NET, которые можно рассматривать как образец структуры проекта и стиля кода?

    isxaker
    @isxaker
    Знаю только обучающие проекты, а на реальные самому хотелось бы посмотреть (при чем как на web forms, так и на mvc).
    Ответ написан
    Комментировать
  • Как установить значение в DataGridViewComboBoxColumn?

    isxaker
    @isxaker Автор вопроса
    Вот где был ключевой момент

    comboBoxColumn.DataPropertyName = "Table_ID";
    

    Здесь мы явно задаем имя свойству, покоторому будет происходить привязка comboBox и dataGridView.
    Ответ написан
    Комментировать