簡體   English   中英

使用字符串或propertyInfo選擇Linq的特定列

[英]Selecting specific columns with Linq, using string or propertyInfo

我正在使用EF重建我們的報告系統,因為我們的舊系統使用了很多動態SQL(我知道不好),所以我想使用Linq來做,所以它使用參數化查詢等。

在報告中,用戶可以選擇要查看的數據列。 現在我如何獲取這些值並使用Linq返回一個SQL語句並獲取我需要的列? 我想知道我是否應該打擾並只返回所有數據,然后只顯示用戶想要在屏幕上顯示的列,這可能是我想要的,但我想我會問。

所以讓我們采取以下Linq示例,我說我只想要Id,Name和Town,我怎么能這樣做。 目前我有類似的東西

var columns = new List<string>() { "Id", "Name", "Town" };

return _context.Data
    .Where(e => e.Name == "test")
    .ToList();

這甚至可能嗎?

如果您根據其名稱選擇屬性,請嘗試動態LINQ庫:

public List<Data> ListByNames(string[] arr)
{
    var str = string.Format("new ({0})", string.Join(", ", arr));
    return _context.Data.Select(str);
}

或編寫自己的Expression ,請參閱@TomBrothers答案: https ://stackoverflow.com/a/4546633/1271037

我知道這種問題。 主要問題:使用EF,您不再處理列,而是屬性。

嘗試這樣的事情:

var column="yourcolumn";
return _context.Data.Where(e => e.GetType().GetProperty(column).GetValue(_context, null)).ToList();

暫無
暫無

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

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