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