반응형
Linq 구별-개수
예제 개체 목록에 대한 쿼리를 수행하려고합니다.
Date Username
01/01/2011 james
01/01/2011 jamie
01/01/2011 alex
01/01/2011 james
02/01/2011 matt
02/01/2011 jamie
02/01/2011 alex
02/01/2011 james
02/01/2011 james
02/01/2011 lucy
02/01/2011 alex
03/01/2011 james
03/01/2011 bob
03/01/2011 bob
03/01/2011 james
03/01/2011 james
04/01/2011 alex
04/01/2011 alex
04/01/2011 alex
linq를 사용하여 고유 사용자 로그인 수로 날짜 목록을 쿼리하고 싶습니다.
예를 들면 :
01/01/2011 - 3
02/01/2011 - 5
03/01/2011 - 2
04/01/2011 - 1
여러 linq 문을 테스트 해 보았지만이 중 어느 것도 원하는 결과를 얻지 못했습니다. 내가 가진 가장 가까운 것은 나에게 뚜렷한 날짜를 제공하지만 모든 사용자의 수입니다.
어떤 도움이라도 대단히 감사하겠습니다.
logins
.GroupBy(l => l.Date)
.Select(g => new
{
Date = g.Key,
Count = g.Select(l => l.Login).Distinct().Count()
});
나는 이것이 고대의 질문이라는 것을 알고 있지만 그것을 우연히 만났고 메소드 구문을 원하는 것에 대한 의견을 보았고 그것에 대답하는 것을 도울 수 없었습니다 ... 코딩 장애가 있을 수 있습니다.
쿼리 구문에서 다음과 같이 보입니다 ... Distinct
및에 대한 쿼리 구문이 없습니다.Count
from l in logins
group l by l.Date into g
select new
{
Date = g.Key,
Count = (from l in g select l.Login).Distinct().Count()
};
원래 메서드 구문 (개인적으로 더 좋아)과 나란히 비교하려면 여기에 있습니다.
logins
.GroupBy(l => l.Date)
.Select(g => new
{
Date = g.Key,
Count = g.Select(l => l.Login).Distinct().Count()
});
Can be done within single GroupBy call,
var Query = list.GroupBy(
(item => item.DateTime),
(key, elements) => new {
key = key,
count = elements
.Distinct()
.Count()
}
);
Something like this maybe?
var list = new List<MyClass>(new[] {
new MyClass { Date = DateTime.Parse("01/01/2011"), Username = "james" },
new MyClass { Date = DateTime.Parse("01/01/2011"), Username = "james" },
new MyClass { Date = DateTime.Parse("01/01/2011"), Username = "alex" },
new MyClass { Date = DateTime.Parse("01/01/2011"), Username = "james" },
new MyClass { Date = DateTime.Parse("02/01/2011"), Username = "matt" },
new MyClass { Date = DateTime.Parse("02/01/2011"), Username = "jamie" },
new MyClass { Date = DateTime.Parse("02/01/2011"), Username = "alex" },
new MyClass { Date = DateTime.Parse("02/01/2011"), Username = "james" },
new MyClass { Date = DateTime.Parse("02/01/2011"), Username = "james" },
new MyClass { Date = DateTime.Parse("02/01/2011"), Username = "lucy" },
new MyClass { Date = DateTime.Parse("02/01/2011"), Username = "alex" },
new MyClass { Date = DateTime.Parse("03/01/2011"), Username = "james" },
new MyClass { Date = DateTime.Parse("03/01/2011"), Username = "bob" },
new MyClass { Date = DateTime.Parse("03/01/2011"), Username = "bob" },
new MyClass { Date = DateTime.Parse("03/01/2011"), Username = "james" },
new MyClass { Date = DateTime.Parse("03/01/2011"), Username = "james" },
new MyClass { Date = DateTime.Parse("04/01/2011"), Username = "alex" },
new MyClass { Date = DateTime.Parse("04/01/2011"), Username = "alex" },
new MyClass { Date = DateTime.Parse("04/01/2011"), Username = "alex" }
});
list.GroupBy(l => l.Date, l => l.Username)
.Select(g => new {
Date = g.Key,
Count = g.Distinct().Count()
});
Another way to solve this is to group twice, check the sample
var dist = listLogins.GroupBy(d => d.date + d.Username)
.Select(x => x.First())
.GroupBy(d => d.date).Select(y => new { date = y.Key, count = y.Count() }).ToList();
참고URL : https://stackoverflow.com/questions/4884462/linq-distinct-count
반응형
'program story' 카테고리의 다른 글
Mercurial 저장소 기록에서 삭제 된 파일을 신속하게 찾으십니까? (0) | 2020.12.07 |
---|---|
Django 오류 메시지 "정의에 related_name 인수 추가" (0) | 2020.12.07 |
Rails 3 : yield / content_for 일부 기본값? (0) | 2020.12.07 |
void 함수에서 복귀 (0) | 2020.12.07 |
ExpandableListView -UnsupportedOperationException : addView (View, LayoutParams)는 AdapterView에서 지원되지 않습니다. (0) | 2020.12.07 |