簡體   English   中英

從已編譯的查詢委托返回匿名類型

[英]return Anonymous type from compiled query delegate

我想從編譯的查詢中返回一個匿名類型,它從兩個表中選擇多個列。

我試過用:

public static Func < DBEntities, string> 

但無法編譯。 我嘗試創建一個新的數據類型BOMWorkOrder但無法使其工作。 可能是我缺少一些語法。

public static Func<DBEntities, string, IQueryable<BOMWorkOrder>> compiledWorkorderQuery =
        CompiledQuery.Compile((DBEntities ctx, string bomNumber) =>
            from items in ctx.BM10200 
            from orders in ctx.BM10300
            where orders.Parent_Component_ID == -1 &&
                    orders.ITEMNMBR == bomNumber &&
                    orders.TRX_ID == items.TRX_ID
            select new 
            {  bomWorkOrder =
                items.TRXDATE,
                orders.TRX_ID,
                orders.ITEMNMBR,
                orders.Assemble_Quantity
            });

工作訂單將在哪里:

public class BOMWorkOrder
{
    public DateTime TransactionDate { get; set; }
    public string TransactionId { get; set; }
    public string ItemNumber { get; set; }
    public int AssemblyQuantity { get; set; }
}

由於您已創建BOMWorkOrder類型,因此請使用該類型而不是匿名類型:

... select new BOMWorkOrder 
    { 
        TransactionDate = items.TRXDATE,
        TransactionId = orders.TRX_ID,
        ItemNumber = orders.ITEMNMBR,
        AssemblyQuantity = orders.Assemble_Quantity
    };

如果返回匿名對象列表,則無法訪問屬性(除非使用dynamic

您只是在select缺少類型名稱:

...
select new BOMWorkOrder
{
    TransactionData = items.TRXDATE,
    TransactionId = orders.TRX_ID,
    ItemNumber = orders.ITEMNBBR,
    AssemblyQuantity = orders.Assemble_Queantity,
}
    select new bomWorkOrder
    {  
        TransactionDate =items.TRXDATE,
        TransactionId =orders.TRX_ID,
        ItemNumber =orders.ITEMNMBR,
        AssemblyQuantity =orders.Assemble_Quantity
    });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM