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




visual studio 2017 c# version (6)

개체 목록이 있습니다.

class Answer
{
   bool correct;
}

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

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

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

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

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


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

a 와 a를 비교 a .

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

긴 형식 : -

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

짧은 형식:-

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

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

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

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

var correctAnswer = 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;
}

첫째, 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);

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

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





linq