나는 내 데이터베이스에 액세스하기 위해 Linq (함께 EF)를 사용합니다. 나는 몇몇 속성을 포함하는 "Job"이라는 객체를 가지고 있는데, 그 중 일부는 "복잡하다". 내 목표는 이러한 속성별로 작업을 그룹화하고 각 그룹의 수를 얻는 것입니다.Linq 그룹화에 대한 또 다른 질문
다음내 개체 (간체) :
는public class Job
{
[Key]
public int Id
{
get;
set;
}
[Required]
public Salary Salary
{
get;
set;
}
[Required]
public ICollection<Category> Categories
{
get;
set;
}
}
"카테고리"복잡한 클래스이며, 다음과 같습니다 는 산업, 필드, 위치 및 급여 클래스는 "INT를
public class Category
{
[Key]
public int Id
{
get;
set;
}
public Industry Industry //Example: Software
{
get;
set;
}
public Field Field //Example: .NET
{
get;
set;
}
public Position Position //Example: Developer
{
get;
set;
}
}
을 포함
"id와"문자열 "이름.업계, 분야, 직위 및 연봉별로 일자리 목록을 그룹화하고 각 그룹의 수를 얻어야합니다. 이것은 바로 지금 내가하는 일이다.
var IndustryGroupsQuery = from t in Jobs.SelectMany(p => p.Categories)
group t by new { t.Industry} into g
select new
{
Tag = g.Key.Industry,
Count = g.Count()
};
var FieldsGroupsQuery = from t in Jobs.SelectMany(p => p.Categories)
group t by new { t.Field} into g
select new
{
Tag = g.Key.Field,
Count = g.Count()
};
var PositionsGroupsQuery = from t in Jobs.SelectMany(p => p.Categories)
group t by new { t.Position} into g
select new
{
Tag = g.Key.Position,
Count = g.Count()
};
Jobs.GroupBy(job => job.Salary)
.Select(group => new
{
Tag = group.Key,
Count = group.Count()
}))
이것은 잘 작동하지만 어떻게 든 성능을 향상시킬 수 있는지 궁금하다.
1 : 아마도 하나의 단일 쿼리가 4 개를 더 잘 수행 할 것이라고 생각합니다. 이 쿼리를 하나의 쿼리로 결합 할 수 있습니까?
질문 2 : Linq에게 "산업"별로 그룹화하도록 요청할 때 산업별로 구분할 수있는 방법은 무엇입니까? 레코드의 키를 암시 적으로 비교합니까? linq에게 그룹화 할 속성 (예 : "id")을 명시 적으로 지정하면 더 빠를 수 있습니까?
감사합니다. 역순
쿼리가 DB에서 실행되는 경우 어떻게 비교할 수 있습니까? – Illidan