我有多個表與一個一對一的成員表相結合,我想要提取的兩列是來自成員表的名稱和來自測試表的測試。 測試列是nvarchar(),並且可能包含「P」,「F」,null,「」,部分分數(例如(26.5))或十進制數以下的條目。下面的代碼幾乎可以完成這項工作,但它看起來很笨重,有很多條款。 此外,輸出按降序排列,但列出了單個數字後的雙位數字,例如: 9.0,9.0,9.0,91.4,8.9,8.8,8.8,86.3,7.9等等,它似乎下降了第一個數字上的數字。縮短where子句
var tests = from t in dc1.testLevels
join m in dc1.Members
on t.testCode equals m.memCode
where !t.Final.Equals("P") && // previous year pass
!t.Final.Equals("F")&& // previous year fail
!t.Final.Equals(null)&& // null values
!t.Final.Equals("") && // empty value
!t.Final.Contains("(") // partial value ie..(26)
select new {Member = m.MemName, Current = Convert.ToDecimal(t.Final)};
var outTest = from tr in tests
orderby tr.Current descending
select new { Member = tr.Member, Current = trCurrent};
dgv1.DataSource = outTest;
降序是因爲該值被視爲字符串而不是數字。看看您是否可以在訂購前轉換它。 –
你可以把你正在檢查的字符串放在一個列表中,並執行'list.Contains(t.Final)'或類似的東西。 – Chris