Bir LINQ sorgu sonuç kümesinde bir DataSet veya DataTable Dolum

oy
109

Nasıl bir ASMX web hizmeti olarak LINQ sorgusu gösteririm? Genellikle, iş katmanından, bir Basılan döndürebilir DataSetveya DataTablehangi ASMX üzerinde taşınması için serileştirilebilir.

Nasıl bir LINQ sorgusu için aynı yapabilirim? Bir Basılan doldurmak için bir yolu var mı DataSetveya DataTablebir LINQ sorgusu aracılığıyla?

public static MyDataTable CallMySproc()
{
    string conn = ...;

    MyDatabaseDataContext db = new MyDatabaseDataContext(conn);
    MyDataTable dt = new MyDataTable();

    // execute a sproc via LINQ
    var query = from dr
                in db.MySproc().AsEnumerable
                select dr;

    // copy LINQ query resultset into a DataTable -this does not work !    
    dt = query.CopyToDataTable();

    return dt;
}

Nasıl bir LINQ sorgu set sonucu alabilirsiniz DataSetOr DataTable? Alternatif olarak, ben bir ASMX web hizmeti olarak maruz böylece LINQ sorgusu serializeable nedir?

Oluştur 01/08/2008 saat 05:59
kaynak kullanıcı
Diğer dillerde...                            


6 cevaplar

oy
76

Söz konusu belirtildiği gibi, IEnumerablebir var CopyToDataTablebir yöntem:

IEnumerable<DataRow> query =
    from order in orders.AsEnumerable()
    where order.Field<DateTime>("OrderDate") > new DateTime(2001, 8, 1)
    select order;

// Create a table from the query.
DataTable boundTable = query.CopyToDataTable<DataRow>();

Neden sizin için çalışma değil mi?

Cevap 15/08/2008 saat 17:27
kaynak kullanıcı

oy
24

Bir karşı bu sorguyu gerçekleştirmek için DataContextsınıf, aşağıdakileri yapmanız gerekir:

MyDataContext db = new MyDataContext();
IEnumerable<DataRow> query = 
    (from order in db.Orders.AsEnumerable()
        select new
        {
            order.Property,
            order.Property2
        })
    as IEnumerable<DataRow>;
return query.CopyToDataTable<DataRow>();

Olmadan as IEnumerable<DataRow>;aşağıdaki derleme hatası göreceksiniz:

örtük 'System.Collections.Generic.IEnumerable' tip 'System.Collections.Generic.IEnumerable' dönüştürülemez. Açık dönüştürme (bir döküm eksik?) Varlığından

Cevap 13/02/2009 saat 01:10
kaynak kullanıcı

oy
21

Veri Transferi Nesneler, haritacılarımızdan bir çift bir dizi olun ve .Asmx yoluyla o dönün.
Sen gerektiğini asla prosedür şemasındaki bir değişiklik fark olmadan web hizmeti tüketiciye yaymak gibi, doğrudan veritabanı nesnelerini maruz.

Cevap 15/08/2008 saat 17:42
kaynak kullanıcı

oy
15

Eğer bir dönüş türü kullanıyorsanız IEnumerable, size dönebilir sorgu doğrudan değişken.

Cevap 01/08/2008 saat 15:10
kaynak kullanıcı

oy
10

Bir sınıf nesnesi oluşturun ve dönüş list(T)sorgusunun.

Cevap 08/08/2008 saat 13:17
kaynak kullanıcı

oy
3

Eğer kullanırsanız dönüş tipi IEnumerableAshton kapısı doğrudan sorgu değişkeni dönmek yardımcı olur.

MyDataContext db = new MyDataContext();
IEnumerable<DataRow> query = 
    (from order in db.Orders.AsEnumerable()
        select new
        {
            order.Property,
            order.Property2
        })
    as IEnumerable<DataRow>;
return query.CopyToDataTable<DataRow>();
Cevap 11/04/2018 saat 11:55
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more