kembali ke jenis jenis tanpa nama dari LINQ ke SQL
Apabila menggunakan LINQ ke SQL untuk menanyakan beberapa jadual, kembali hasil jenis tanpa nama mungkin membawa cabaran. Memandangkan adegan, anda mempunyai meja anjing (termasuk nama, umur, dan breedid) dan baka meja (termasuk baka dan name). Ia mudah untuk mendapatkan semua anjing:
bagaimanapun, cuba menggunakan jenis tanpa nama untuk mengembalikan anjing dengan nama baka yang sepadan akan menyebabkan kesilapan penyusunan: 1 2 3 4 5 6 7 8 | public IQueryable<Dog> GetDogs()
{
var db = new DogDataContext(ConnectString);
var result = from d in db.Dogs
join b in db.Breeds on d.BreedId equals b.BreedId
select d;
return result;
}
|
Salin selepas log masuk
Ini kerana LINQ ke SQL mengharapkan untuk mengembalikan jenis anjing, tetapi pertanyaan menghasilkan jenis tanpa nama. 1 2 3 4 5 6 7 8 9 10 11 12 | public IQueryable<Dog> GetDogsWithBreedNames()
{
var db = new DogDataContext(ConnectString);
var result = from d in db.Dogs
join b in db.Breeds on d.BreedId equals b.BreedId
select new
{
Name = d.Name,
BreedName = b.BreedName
};
return result;
}
|
Salin selepas log masuk
Gunakan kelas tersuai
Untuk mengatasi masalah ini, penyelesaiannya adalah untuk membuat kelas tersuai untuk mewakili hasil yang diperlukan:
Kaedah ini mencipta kelas dogwithbreed yang mengandungi sifat anjing dan nama baka. Kemudian, tanya contoh kelas tersuai ini, yang boleh digunakan untuk mengakses data yang diperlukan. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | public class DogWithBreed
{
public Dog Dog { get; set; }
public string BreedName { get; set; }
}
public IQueryable<DogWithBreed> GetDogsWithBreedNames()
{
var db = new DogDataContext(ConnectString);
var result = from d in db.Dogs
join b in db.Breeds on d.BreedId equals b.BreedId
select new DogWithBreed()
{
Dog = d,
BreedName = b.BreedName
};
return result;
}
|
Salin selepas log masuk
Atas ialah kandungan terperinci Bagaimana untuk mengembalikan data dari LINQ ke SQL tanpa kesilapan kompilasi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!