Avatar billede zentral Nybegynder
06. oktober 2009 - 15:44 Der er 2 kommentarer og
1 løsning

Linq query

Hey

Jeg kan ikke finde ud af at bruge sum funktionen ordentelig.
håber der er en som kan hjælpe mig.
hvordan kan jeg gøre det, i dette udtræk ?



DataAccessDataContext db = new DataAccessDataContext();
var result = from p in db.tblStoreOrderLines
where p.tblStoreUsers.UserSchoolID == _schoolID && p.tblStoreStudents.StudentDeleted == 0

orderby p.StudentName
select new
{
UserID = p.UserID,
StudentID = p.StudentID,
StudentName = p.tblStoreStudents.StudentName,
UserPhone = p.tblStoreUsers.UserPhone,
StudentClass = p.tblStoreStudents.StudentClass,
UserMoneyTotal = --SUM PÅ DETTE FELDT--
};

return result;
Avatar billede arne_v Ekspert
07. oktober 2009 - 04:13 #1
1) du skal nok forklare hvad det er du vil - der absolut ikke klart fra ovenstående kode snippet hvad du vil

2) har du overvejet at bruge helt normal SQL ?
Avatar billede arne_v Ekspert
07. oktober 2009 - 04:34 #2
Hvis jeg skal gætte så vil du noget a la dette:

using System;
using System.Collections.Generic;
using System.Linq;

namespace E
{
    public class Order
    {
        public int StudentId { get; set; }
        public decimal Amount { get; set; }
    }
    public class Student
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }
    public class Program
    {
        public static void Main(string[] args)
        {
            List<Order> ordr = new List<Order>();
            ordr.Add(new Order { StudentId=1, Amount=10.00m });
            ordr.Add(new Order { StudentId=2, Amount=20.00m });
            ordr.Add(new Order { StudentId=2, Amount=30.00m });
            List<Student> stud = new List<Student>();
            stud.Add(new Student { Id=1, Name="A A" });
            stud.Add(new Student { Id=2, Name="B B" });
            Console.WriteLine("No grouping:");
            var q1 = from o in ordr join s in stud on o.StudentId equals s.Id
                    orderby s.Name
                    select new { StudentId=s.Id, Name=s.Name, Amount=o.Amount };
            foreach(var r1 in q1)
            {
                Console.WriteLine(r1.StudentId + ", " + r1.Name + ", " + r1.Amount);
            }
            Console.WriteLine("Grouping:");
            var q2 = from o in ordr
                    group o by o.StudentId into g
                    join s in stud on g.Key equals s.Id
                    orderby s.Name
                    select new { StudentId=g.Key, Name=s.Name, Amount=g.Sum(o => o.Amount) };
            foreach(var r2 in q2)
            {
                Console.WriteLine(r2.StudentId + ", " + r2.Name + ", " + r2.Amount);
            }
            Console.ReadKey();
        }
    }
}
Avatar billede janus_007 Nybegynder
17. oktober 2009 - 00:04 #3
Gør sådan her:

DataAccessDataContext db = new DataAccessDataContext();
var result = from p in db.tblStoreOrderLines
where p.tblStoreUsers.UserSchoolID == _schoolID && p.tblStoreStudents.StudentDeleted == 0

orderby p.StudentName
select new
{
UserID = p.UserID,
StudentID = p.StudentID,
StudentName = p.tblStoreStudents.StudentName,
UserPhone = p.tblStoreUsers.UserPhone,
StudentClass = p.tblStoreStudents.StudentClass,
UserMoneyTotal = db.tblStoreOrderLines.Where(ol => ol.UserID == p.UserId).Sum(total => total.Money)
};

Ingen grund til normal SQL når man har LINQ ved hånden :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester