簡體   English   中英

動態修改LINQ to SQL Select語句的列

[英]Dynamically Modifying a LINQ to SQL Select Statement's Columns

我正在嘗試為我的應用程序構建一個REST-ful API。 目前我有這樣的事情:
www.example.com/submissions/?format=json

這將返回JSON中最新的十個提交。 每個對象都有其詳細信息,例如提交名稱,創建日期,用戶,正文等。

我想做一些事情,比如:
www.example.com/submissions/?format=json&filter=name,user

過濾器應該使請求返回相同的結果,但只包括提到的細節,即每個對象只有一個名稱和用戶。

就JSON輸出而言,這是相當簡單的。 我可以從數據庫加載所有列,並創建和序列化一個只包含過濾器中的列的對象。 但是,我不想加載數據庫中的所有列 - 我想用我將包含在響應中的列來打擾我的數據庫

我想做這樣的事情:

var result = from record in Submissions
             select
             {
                Name,
                Date,
                User,
                Body
             };

現在我有了result對象,它是IQueryable,所以還沒有調用數據庫。

然后,我應該檢查filter查詢字符串並排除未提及的列。

最后,我可以用類似的東西執行select語句
JavaScript.Serialize(result.ToList());

LINQ to SQL可以實現嗎?

手動構建Select表達式樹的另一種方法是Dynamic LINQ ,它提供了一個采用字符串的Select方法:

var filter = "name,user";
var result = Submissions.Select("new(" + filter + ")");

然后將該字符串轉換為表達式樹並傳遞給您的查詢提供程序。

是。 您將要研究修改表達式樹 特別是MemberInit表達式

暫無
暫無

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

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