programing

목록에서 고유한 값 목록을 가져옵니다.

abcjava 2023. 4. 11. 21:37
반응형

목록에서 고유한 값 목록을 가져옵니다.

C#에, 내가 라는 클래스가 있다고 가정해봐.Note3개의 스트링 멤버 변수를 사용합니다.

public class Note
{
    public string Title;
    public string Author;
    public string Text;
}

그리고 타입 리스트도 있어요Note:

List<Note> Notes = new List<Note>();

작성자 열의 모든 개별 값 목록을 가져오는 가장 깨끗한 방법은 무엇입니까?

목록을 반복하여 중복되지 않는 모든 값을 다른 문자열 목록에 추가할 수 있지만, 이것은 더럽고 비효율적인 것 같습니다.한 줄에 이걸 할 수 있는 마법 같은 린크 건축이 있을 것 같은데, 난 아무것도 생각해내지 못했어.

Notes.Select(x => x.Author).Distinct();

그러면 시퀀스가 반환됩니다(IEnumerable<string>)의Authorvalues - 고유값당 1개씩.

작성자별로 노트 클래스 구별

var DistinctItems = Notes.GroupBy(x => x.Author).Select(y => y.First());

foreach(var item in DistinctItems)
{
    //Add to other List
}

Jon Sket은 morelinq라는 이름의 도서관을 썼습니다.DistinctBy()교환입니다.실장에 대해서는, 여기를 참조해 주세요.당신의 코드는 다음과 같습니다.

IEnumerable<Note> distinctNotes = Notes.DistinctBy(note => note.Author);

업데이트: 질문을 다시 읽은 후 다른 작성자 세트를 찾고 있다면 Kirk가 정답을 알 수 있습니다.

샘플 추가(DistinentBy에 여러 필드 추가:

res = res.DistinctBy(i => i.Name).DistinctBy(i => i.ProductId).ToList();
public class KeyNote
{
    public long KeyNoteId { get; set; }
    public long CourseId { get; set; }
    public string CourseName { get; set; }
    public string Note { get; set; }
    public DateTime CreatedDate { get; set; }
}

public List<KeyNote> KeyNotes { get; set; }
public List<RefCourse> GetCourses { get; set; }    

List<RefCourse> courses = KeyNotes.Select(x => new RefCourse { CourseId = x.CourseId, Name = x.CourseName }).Distinct().ToList();

위의 논리를 사용함으로써, 우리는 독특한 것을 얻을 수 있다.Courses.

@if (dataModal.Count > 0)
{
    var DistinctItems = dataModal.GroupBy(x => x.Year).Select(y => y.First());

    <div class="col-md-3">
        <label class="fs-7 form-label text-muted">@Localizer["Year"]</label>
            <InputSelect id="ddlYears" class="form-select" @bind-Value="filter.Year">                            
                <option value="">@Localizer["Select"]</option>
                @foreach (var year in DistinctItems)
                {
                   <option value="@year.Year">
                       @year.Year
                   </option>
                }
            </InputSelect>
    </div>
}

mcilist = (from mci in mcilist select mci).Distinct().ToList();

언급URL : https://stackoverflow.com/questions/10255121/get-a-list-of-distinct-values-in-list

반응형