簡體   English   中英

動態Linq FirstOrDefault語句

[英]Dynamic Linq FirstOrDefault Statement

使用C#7+,我通過FirstOrDefault()語句實例化一個變量。 但是在整個代碼中針對不同的變量進行了重復。 我想知道是否/如何動態構建這些語句。 這是我目前擁有的(注意變量名與DataTable名稱匹配)

var generalSolution = this.GeneralSolution.FirstOrDefault();
var pieceModel = this.PieceModel.FirstOrDefault();
.... many more of these same variable declarations.....

我想給的是一個字符串列表,迭代地創建每個變量。 就像是:

foreach(var item in list)
{
    var somename = this."item".FirstOrDefault();
}

完全有可能嗎?

是的,您可以通過反射來完成此操作,但是需要一些工作才能使其易於使用格式,因此可能不建議這樣做。

請參閱此dotnetfiddle,了解我一起提出的快速示例

從本質上講,你可以得到的所有屬性this通過使用typeof(this).GetProperties()方法。 這將為您返回PropertyInfo對象的列表,然后您可以像在小提琴中一樣進行迭代。 但是,如果有任何其他的屬性this也將抓住這些,所以你可以使用的BindingFlags的過載范圍內的GetProperties功能。

最后,最好是創建一種具有您期望並希望迭代的屬性的容器。 或者更好的是,您可能只需要接受要執行很多FirstOrDefaults ,這是一條更安全的方法。 反思可能會很棘手和令人困惑

隨時問任何問題,我很樂意進一步詳細介紹

暫無
暫無

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

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