[英]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.