2013-02-20 5 views
1

목표 : 사람들의 일반 목록을 가져 와서 남성, 여성 및 어린이가 내 모델에서 정렬하십시오. 또한이 사이트 및 개인 정보 보호를 위해 사물의 이름을 변경했습니다. .. 아래의 람다 식에 집중하십시오! 고맙습니다!목록에서 선택 목록

는이 오류를 얻을 :

Cannot convert from System.Collections.Generic.IEnumerable<bool> to System.Collections.Generic.IEnumerable<Project1.DataClasses.DataObjects.People>

PeopleModel을 :

public List< People> Men { get; set; } 
public List< People> Women { get; set; } 
public List< People> Kids { get; set; } 
public List< People> Babies { get; set; } 

컨트롤러 : 당신은 Where 문을 찾고 있습니다

public ActionResult GetPeople(PeopleModels Peoples) 
{ 
    List<People> listPeoples = new List<People>(); 

    listPeoples = DataClass.GetAllPeoples(); 

    // this is the code I cannot get to work. 
    var men = listPeoples .Select(m => m.Sex == "M"); 
    Peoples.Men = men.ToList<People>(); 

    // Women, Children too.. 

    return View("Employees", Peoples); 
} 
+0

Dataclass.GetAllPeoples()는 무엇을 반환합니까? –

답변

7

.

// Get People wher the Sex = "M" 
    Peoples.Men = listPeoples.Where(m => m.Sex == "M").ToList(); 
4

현재에만 m.Sex 속성을 선택하고 이유 오류입니다 List<People>에 목록을 지정하려고합니다. 당신은 간단하게 수행 할 수 있습니다

Peoples.Men = listPeoples.Where(m => m.Sex == "M").ToList(); 

은 또한 당신은 Tolist<People>()이 간단 ToList()이 일을 할 필요가 없습니다.

1

남성 컬렉션에 부울 유형 항목이 있습니다.

var men = listPeoples .Select(m => m.Sex == "M"); // returns a boolean collection  satisfying the condition 
    Peoples.Men = listPeoples .Where(m => m.Sex == "M").ToList(); // This should be what you want 

또한

var men = listPeoples .Where(m => m.Sex == "M"); 
Peoples.Men = men.ToList(); 
+0

수정 됨 :) 오류. – Igoy

2

당신은 LINQ 쿼리의 기초를 이해하지 할 수 있습니다. "Select"문은 결과를 투사해야합니다. 예를 들어 :

var a = new List<string>{"ab", "abc", "abcd"}; 
var b = a.Select(x=>x.Length).ToList(); 

는 여기에서 발생하는 것은 "A"요소의 모든 길이의 선택과는 지금 {2,3,4}

는 당신이 필요로하는 것은 "어디"문입니다 포함 List<int>있는 변수 B에 저장하기 렉션에서 술어 오브젝트 필터 (모든 목적을 IEnumerable)

var c = a.Where(x=>x.Length<4).Select(x=>x.Length).ToList(); 

다른 구문 :

0

우리는 의 요소에서우리가 길이가 모든 길이를 선택 4 자 및 보다 작은 경우 요소을받을 필요가 목록이을 나열 그들에게 를 넣어 말과 c 변수에 지정하십시오.이 유일한 문제는 각 모음을 선택하는 것입니다

var grouped = from person in people 
    group person by person.Type into g 
    select new {Key = g.Key, people = g}; 

:

당신이 주제에 대한 자세한 내용을 읽고 these 샘플 그룹

0

당신이 자신의 모음으로 각 유형의를 얻을 수를 확인하는 것이 좋습니다 지금까지 얻은 최고입니다.

List<Person> men = new List<Person>(), women = new List<Person>(), children = new List<Person>(), babies = new List<Person>(); 

foreach (var persons in grouped) 
{ 
    switch (persons.Key) 
    { 
     case PersonType.Male: men = persons.people.ToList(); break; 
     case PersonType.Female: women = persons.people.ToList(); break; 
     case PersonType.Child: children = persons.people.ToList(); break; 
     case PersonType.Baby: babies = persons.people.ToList(); break; 
    } 
}