簡體   English   中英

簡單的Linq問題:如何選擇多個列?

[英]Simple Linq question: How to select more than one column?

我的代碼是:

            List<Benutzer> users = (from a in dc.Benutzer
                                    select a).ToList();

我需要這個代碼,但我只想在“Benutzer”-Table中選擇20個列中的3個。 那是什么語法?

這是一個查詢表達式:

var users = (from a in dc.Benutzer
             select new { a.Name, a.Age, a.Occupation }).ToList();

或者用點符號表示:

var users = dc.Benutzer.Select(a => new { a.Name, a.Age, a.Occupation })
                       .ToList();

請注意,這將返回匿名類型的列表,而不是Benutzer實例。 我個人更喜歡這種方法而不是創建一個部分填充的實例列表,因為任何處理部分實例的人都需要檢查它們是否來自於找出實際存在的內容。

編輯:如果你真的想構建Benutzer實例,並且LINQ不允許你在查詢中這樣做(我不知道為什么)你可以隨時做:

List<Benutzer> users = dc.Benutzer
    .Select(a => new { a.Name, a.Age, a.Occupation })
    .AsEnumerable() // Forces the rest of the query to execute locally
    .Select(x => new Benutzer { Name = x.Name, Age = x.Age, 
                                Occupation = x.Occupation })
    .ToList();

即使用匿名類型作為DTO。 請注意,返回的Benutzer對象不會與上下文關聯。

    List<Benutzer> users = (from a in dc.Benutzer
                            select new Benutzer{
                             myCol= a.myCol,
                             myCol2 = a.myCol2
                             }).ToList();

如果你想制作同樣的清單,我認為這就是你想要的。 但是,假設您設置的屬性具有公共設置器。

嘗試:

var list = (from a in dc.Benutzer select new {a.Col1, a.Col2, a.Col3}).ToList();

但現在你有匿名對象的列表而不是Benutzer對象的列表。

暫無
暫無

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

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