안녕하세요, 저는 ui 레이어로 그룹 데이터를 반환하고 싶습니다.내 그룹화를 단순화
여기 groupby "GenerationDate"를 단순화하고 목록 <>의 데이터를 UI gridview로 돌려 보내려고합니다. 나는 forloop을해야하므로 매우 성가신 것을 느낍니다. 또한 UI 레이어에서 나는이 간단한 groupby를 위해 forloop을 또 하나해야한다. 그것을 단순화하는 데 도움이 될 수 있습니까?
public List<SalaryTracker> GetSalaryTrackerOrderByGenerationDate(int tutorId)
{
List<SalaryTracker> salary = new List<SalaryTracker>();
using (leDataContext db = new leDataContext())
{
try
{
var r =
from s in db.SalaryTrackers
where s.StaffId == 2 && s.PaymentDate == null
group s by s.GenerationDate into g
where g.Count() > 0
select new
{
date = g.Key, totalSalary = g.Sum(p => p.SalaryAmount)
};
foreach (var rr in r)
{
SalaryTracker m = new SalaryTracker();
m.GenerationDate = rr.date;
m.SalaryAmount = rr.totalSalary;
salary.Add(m);
}
return salary;
}
catch (Exception ex)
{
Logger.Error(typeof(SalaryTracker), ex.ToString());
throw;
}
}
}
--------------- 내가 이렇게
totalCommissionsGroup = salary.GetSalaryTrackerOrderByGenerationDate(tutor.Id);
IList<SalaryTracker> rr = (
totalCommissionsGroup.GroupBy(x => x.GenerationDate)
.Select(g => new SalaryTracker
{
MonthId = g.Key.Month,
MonthToPay = common.GetMonthName(Convert.ToInt16(g.Key), true),
SalaryAmount = g.Sum(x => x.SalaryAmount)
})).ToList<SalaryTracker>();
gvSalaryPayment.DataSource = rr;
GUI
내가 문자열
안녕하세요, 답장을 보내 주셔서 감사합니다. 이 오류가 있습니다. "{"쿼리에서 엔티티 유형 'le.DataModel.SalaryTracker'의 명시 적 생성이 허용되지 않습니다. "}". 나는 이것이 MonthToPay 속성 때문이라고 생각합니다. public string MonthToPay {get; 세트; } salaryTracker 클래스에 추가 한 것은 무엇입니까? – VeecoTech
SalaryTracker 클래스를 게시 할 수 있습니까? linq-to-sql을 사용하고 있습니까? –
예 SQL에 linq을 사용하고 있습니다. 클래스 내 속성 '이다 공공 부분 클래스 SalaryTracker { 공공 INT MonthId {얻을; 세트; } public string MonthToPay {get; 세트; } 공개 DateTime lastPaymentDate {get; 세트; } 공통 공통 = 새 공통(); ' 그리고 정확하게 당신이 작성한 함수로 – VeecoTech