문제

당신은 어떻게 노출 LINQ 쿼리로 ASMX 웹 서비스입니까?일반적으로,비즈니스 계층,저는 반환할 수 있 입력 DataSetDataTable 할 수 있는 직렬화를 위한 전송을 통해 ASMX.

어떻게 할 수 있는 동에 대한 쿼리?는 방법이 있을 채우는 입력 DataSetDataTable 를 통해 쿼리?

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;
}

를 얻을 수 있는 방법은 결과는 설정의 쿼리로 DataSetDataTable?또한,이 LINQ 에 쿼리를 직렬화할 수 있도록 노출로 ASMX 웹 서비스입니까?

도움이 되었습니까?

해결책

에서 언급했듯이,질문 IEnumerableCopyToDataTable 방법:

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>();

왜 없는 것은 당신을 위해 작동 합니까?

다른 팁

을 수행하는 이에 대한 쿼리 DataContext 클래스에,당신은에서는 다음을 수행해야 합니다:

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>();

이 없 as IEnumerable<DataRow>; 다음과 같은 컴파일러:

할 수 없는 암시적으로 변환 type'의 시스템입니다.컬렉션이 있습니다.일반적입니다.페'를 시스템입니다.컬렉션이 있습니다.일반적입니다.페'.는 명시적 변환 존재하는(당신은 누락 캐스팅?)

트의 데이터 전송을 개체의 몇 가지 매퍼에 돌아와 그를 통해.asmx.
노출의 데이터베이스 객체를 직접으로 변경 절차에서 스키마를 전파하는 웹 서비스 소비자에게 당신이 그것을 몰래.

사용하는 경우에는 반품의 유형 IEnumerable, 를 반환할 수 있습니다 당신 쿼리 변수를 직접 있습니다.

클래스를 만들 개체 반환 list(T) 의 쿼리가 있습니다.

사용하는 경우에는 반품의 유형 IEnumerable.그것은 반환하는 쿼리를 직접 변수.

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>();
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top