Sto usando LINQ alle entità.Perché questa espressione di linq non funziona?
Ho un tavolo chiamato Studente; ha ID e nome come colonne. L'ID è una chiave primaria.
Vorrei poter selezionare il nome dello studente e ottenere il numero di studenti con lo stesso nome.
Quindi, ad esempio, avrei questo come dati della tabella.
ID Name
1 Bob
2 Will
3 Bob
Dopo aver eseguito la query, restituirei un elenco di oggetti studenti simili a questo.
Name Quantity
Bob 2
Will 1
Suppongo che sia un po 'simile a come funziona la pagina Tag di stackoverflow; Ha il nome e la quantità.
In ogni caso, ho creato una classe parziale chiamata Student.cs in cui ho aggiunto una proprietà Quantity come questa.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace MySite.Models
{
public partial class Student
{
private int _quantity;
public int Quantity
{
get { return _quantity; }
set { _quantity = value; }
}
}
}
sono arrivato fino a questo, ma sto ottenendo un errore ..
public IQueryable<Student> FindStudentsDistinctWithQuantity()
{
/*SELECT Name, COUNT(Name) AS Quantity
FROM Student
GROUP BY Name*/
var students= (from s in db.Students
group s by s.Name into g
select new {Name = g.Key, Quantity = g.Count()});
return students;
}
l'errore che sto ottenendo dice qualcosa del tipo Impossibile convertire dal tipo anonimo alla lista degli studenti. Ha qualcosa a che fare con esso non riconoscendo il campo della quantità che ho aggiunto nella classe parziale?
Grazie!
Alcuni consigli generali: smettere di usare var fino ad arrivare più esperienza . Se avessi provato a usare 'IQueryable = (da ...' avresti azzerato molto più velocemente sul problema. –