簡體   English   中英

如何從LINQ查詢返回匿名類型的對象(或對象列表)到C#中的UI(控制台應用程序)?

[英]How to return an object (or a list of objects) of anonymous type from a LINQ query to the UI (Console App) in C#?

假設我使用join和groupbys使用LINQ查詢多個表,結果是我想傳遞給UI層的匿名對象的IQueryable<'a> 我該如何處理?

如果方法的返回類型是簡單的非泛型IQueryable ,則可以返回IQueryable<'a> (匿名類型的IQueryable 但是,如何使用此非通用IQueryable對象,如何訪問包含的匿名對象的屬性?

你不能那樣做。 您將需要為其創建具有所需屬性的DTO。

public class DTO
{
    public int PropA { get; set; }
    .......
    .......
}

然后將您的查詢具體化到DTO中:

public List<DTO> GetData()
{
    return query.Select(x= > new DTO() 
                 {
                   PropA = x.SomeColumn,
                   ...........
                   ...........
                 }).ToList();
}

希望能幫助到你。

您可以使用值元組,因此返回一個新的值元組,如下所示:

public (string Name, int Age, DateTimeOffset Timestamp)[] GetValues()
{
    return database.Where(x => ...)
        .Select(x => (Name: x.Name, Age: x.Age, Timestamp: DateTimeOffset.Now))
        .ToArray();
}

然后,您將獲得一個以值元組為結果的通用數組,並可以使用給定的屬性名稱訪問這些值,例如:

var array = GetValues();
var age = array.First(x => x.Name == "John Doe").Age;

這樣,您不必定義自定義類型即可獲得靈活性

暫無
暫無

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

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