제가 앞뒤가 맞지 않아요. 내 예제를 잘못 말한 것 같습니다. 답변을 주신 분들께 진심으로 감사드립니다. 제발 좀 더 정확한 내용으로 설명하려고 다시 시도하겠습니다. 답변을 수정하십시오. 다시 한 번 이전 게시물에 더 정확하지 않은 점에 대해 사과드립니다.일치하는 속성을 가진 개체 목록의 첫 번째 개체를 유지하십시오.
내 스테이징 테이블을 나타내는 Staging이라는 엔터티 프레임 워크 모델 클래스를 사용하면 다음과 같은 메시지가 표시됩니다. List<Staging>
.
public partial class Staging
{
public int ID { get; set; } //PK
public int RequestID { get; set; } //FK
...
public string Project { get; set; }
...
}
우리가 쿼리 내 data
목록에 10 개 개의 레코드를 반환한다고 가정하자
List<Staging> data = (from t in database.Stagings select t).ToList();
//check for an empty List...react accordingly...
여기에 빠른 Staging
의 모습을 봐입니다. data[3]
, data[6]
및 data[7]
은 각각 data.Project
에 동일한 값을 가지고 있다고 가정 해 봅니다. "Foo"
이라고 가정 해 봅시다. data.Project
값은 런타임까지 알 수 없습니다.
이 경우, 첫 번째 발생 인 data[3]
을 어떻게 유지하고 data[6]
과 data[7]
을 내 List<Staging>
에서 제거 할 수 있습니까?
편집 : 나는 다음과 같은 코드를 가지고 있지만 다른 방법이 있습니까?
HashSet<string> projectValuesFound = new HashSet<string>();
List<Staging> newData = new List<Staging>();
foreach (Staging entry in data)
{
if (!projectValuesFound.Contains(entry.Project))
{
projectValuesFound.Add(entry.Project);
newData.Add(entry);
}
}
대답은 여기 http://stackoverflow.com/questions/489258/linq-distinct-on-a-particular-property –