c# 버전 - 개체 특성에 따라 목록에서 Linq 선택 개체



업데이트 설치 (8)

개체 목록이 있습니다.

class Answer
{
   bool correct;
}

List<Answer> Answers = new List<Answer>();

그 속성에 따라 개체를 선택하려면 linq에 대한 방법이 있습니까?

지금까지 나는 가지고있다.

Answer answer = Answers.Single(a => a == a.Correct);

하지만 작동하지 않습니다.


Answers

Answers = Answers.GroupBy(a => a.id).Select(x => x.First());

각 고유 객체를 전자 메일로 선택합니다.


나는 당신이 이것을 찾고 있다고 생각하니?

var correctAnswer = Answers.First(a => a.Correct);

다음을 입력하여 single을 사용할 수 있습니다.

var correctAnswer = Answers.Single(a => a.Correct);

당연하지!

FirstOrDefault() 를 사용하여 조건과 일치하는 첫 번째 객체를 선택합니다.

Answer answer = Answers.FirstOrDefault(a => a.Correct);

그렇지 않으면 Where() 를 사용하여 목록의 하위 집합을 선택하십시오.

var answers = Answers.Where(a => a.Correct);

귀하의 표현은 절대로 평가되지 않습니다.

a 와 a를 비교 a .

a 는 답 유형입니다. a.Correct , 나는 부울이라고 생각합니다.

긴 형식 : -

Answer = answer.SingleOrDefault(a => a.Correct == true);

짧은 형식:-

Answer = answer.SingleOrDefault(a => a.Correct);

첫째, Single 조건을 만족하는 요소가 두 개 이상있는 경우 Single 은 예외를 throw합니다. 둘째, 귀하의 기준은 Correct 속성이 true 인지 여부 만 확인해야 true . 바로 지금, aa 와 같은지 확인하고 있습니다. a.Correct (컴파일하지도 않음).

First (그러한 요소가없는 경우에 throw됩니다) 또는 FirstOrDefault (그러한 요소가 존재하지 않는 경우는 참조 형에 null 가 돌려 FirstOrDefault )를 사용할 필요가 있습니다.

// this will return the first correct answer,
// or throw an exception if there are no correct answers
var correct = answers.First(a => a.Correct); 

// this will return the first correct answer, 
// or null if there are no correct answers
var correct = answers.FirstOrDefault(a => a.Correct); 

// this will return a list containing all answers which are correct,
// or an empty list if there are no correct answers
var allCorrect = answers.Where(a => a.Correct).ToList();

a.Correct 가 정답의 bool 플래그라면 필요한 것입니다.

Answer answer = Answers.Single(a => a.Correct);

여기서 해결해야 할 몇 가지 사항 :

  1. 클래스 선언에 괄호가 없습니다.
  2. "올바른"속성을 공개로 설정하십시오.
  3. 그런 다음 선택을하십시오.

코드가 다음과 같이 보일 것입니다.

List<Answer> answers = new List<Answer>();
/* test
answers.Add(new Answer() { correct = false });
answers.Add(new Answer() { correct = true });
answers.Add(new Answer() { correct = false });
*/
Answer answer = answers.Single(a => a.correct == true);

그리고 수업

class Answer
{
   public bool correct;
}

객체 배열에서 속성의 최대 값 또는 최소값을 얻으려면 :

각 속성 값을 저장하는 목록을 만듭니다.

list<int> values = new list<int>;

모든 속성 값을 목록에 추가하십시오.

foreach (int i in obj.desiredProperty)
{    values.add(i);  }

목록에서 최대 또는 최소값 가져 오기 :

int Max = values.Max;
int Min = values.Min;

이제 객체의 배열을 반복하고 확인할 속성의 값을 max 또는 min int와 비교할 수 있습니다.

foreach (obj o in yourArray)
{
    if (o.desiredProperty == Max)
       {return o}

    else if (o.desiredProperty == Min)
        {return o}
}




c# linq