簡體   English   中英

在LINQ查詢(EF 5)中包括編碼字段值

[英]Include coded field value in LINQ query (EF 5)

不確定正確的術語,但是在Entity Framework 5 LINQ查詢中,是否有任何方法可以包含表中不存在的“編碼字段”?

例如,在SQL中,您可以執行以下操作:

SELECT 'Ledger' AS type, (...) FROM table

這樣查詢結果將包括一個名為“ type”的字段,其值為“ Ledger”。 有沒有辦法在LINQ查詢中做到這一點?

在詢問為什么必須在查詢中之前,這是因為查詢是多個表的聯合,並且我需要指定數據來自哪個表。 沒有這個,我將需要分別查詢每個人,然后將它們合並。

你當然可以。 它看起來像這樣:

var results = dbContext.Table.Select(r => new { type = "Ledger", ... });

或者,如果您需要命名類型,則應執行以下操作:

public class UnionResult 
{
    string Type { get; set; }
    ...
}

var results = dbContext.Table.Select(r => new UnionResult { Type = "Ledger", ... });

是的,您完全可以做到這一點。

pswg使用了一種稱為匿名類型的東西。 基本上,您可以動態定義查詢的結果。 如您在他的答案中所見,在表達式語法中,這看起來像Select(r => new { type = "Ledger", ... });

在查詢語法中,它看起來像這樣:

from xxx in y
select new { type = "Ledger" };

在new的后面,沒有class / type或任何東西。 兩者均未定義類型。 但是它會自然地編譯為字符串。

另一方面,您可以為此定義一個自定義ViewModel類

public class CustomResultVM
{
   //ignoring getter and setter
   public int Id;
   public string type;
   public string name;
}

您的選擇現在將被強類型鍵入,如下所示:

Select(r => new CustomResultVM 
{ 
  Id = r.xxx,
  type = "Ledger", 
  Name = r.xxxx 
});

//query snytax
from xxx in y
select new CustomResultVM 
       {
          Id = r.xxx,
          type = "Ledger", 
          Name = r.xxxx 
       };

兩種方法都是有效的,並且取決於您在任何給定時間點的需求。

暫無
暫無

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

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