我正在嘗試編寫一些邏輯來確定集合中某個對象的某個屬性的所有值是否都是數字並且大於零。我可以很容易地使用ForEach編寫這個,但是我想用Linq來做它。我試過這個:Linq to Objects - 爲任何非數字數據查詢對象
var result = entity.Reports.Any(
x =>
x.QuestionBlock == _question.QuestionBlock
&& (!string.IsNullOrEmpty(x.Data)) && Int32.TryParse(x.Data, out tempVal)
&& Int32.Parse(x.Data) > 0);
它不能正常工作。我也試過,希望Int32上的TryParse()在第一次遇到不能被解析爲int的字符串時將返回false。但它看起來出來的參數將包含可以解析爲一個int的第一個值字符串值。
var result = entity.GranteeReportDataModels.Any(
x =>
x.QuestionBlock == _question.QuestionBlock
&& (!string.IsNullOrEmpty(x.Data)) && Int32.TryParse(x.Data, out tempVal));
任何幫助,非常感謝!
如果'TryParse'返回false,'out'參數的值是未定義的。 – Jodrell 2013-05-03 14:58:00
如果'TryParse'返回'false',我相信out參數是0('int'的默認值),但這沒有記錄。實際上MSDN認爲它返回「未初始化」,但這是不可能的,因爲根據定義「out」意味着必須在函數返回之前設置一個值。反編譯該方法顯示,在實際完成任何工作之前,它實際上被設置爲0。 – 2013-05-03 15:02:10
@BrianBall,我不會編寫依賴於該代碼的代碼,但它可能是正常的。 – Jodrell 2013-05-03 15:08:54