好的,我一直對我的頭撞了幾天,在學習LINQ之後,我想我正走在正確的軌道上。但我有一個SQL大腦,有時很難轉化爲C#。LINQ加入和orderby問題
我有兩個數組,一個按字母順序排序,另一個按ID排序。我需要按字母順序排列第二個數組。 ID是連接因素。 I.E. A.ID = P.ID.
這裏是我的數組和示例值;
private IGenericListItem[] _priceLevels = new IGenericListItem[0];
_priceLevels is in the form of {ID, Name}
{3, A}
{8, B}
{4, C}
{7, D}
{5, E}
{9, F}
{1, G}
編輯:更新這表明_assignmentControls包含一個子陣列。我沒有讓這個瘋狂的理由變成這樣。它實際上包含_priceLevels的副本...問題的
protected ArrayList _assignmentControls = new ArrayList();
_assignmentControls is in the form of {ID, LastPrice, NewPrice, _priceLevels[]}
{1, 1.00, 2.00, _priceLevels}
{2, 1.00, 2.00, _priceLevels}
{3, 1.00, 2.00, _priceLevels}
{4, 1.00, 2.00, _priceLevels}
部分作爲我試圖比較/加入一個ArrayList和IGenericListItem。
In SQL I would do something like this;
SELECT A.*
FROM _assignmentControls A JOIN _priceLevels P
ON A.ID = P.ID
ORDER BY P.Name
這將返回我在_priceLevels值進行排序的_assignmentControls表。
在C#LINQ我得到了這麼多,但似乎無法得到正確的;
var sortedList =
from a in _assignmentControls
join p in _priceLevels on a equals p.ID
orderby p.Name
select _assignmentControls;
我在加入和orderby下得到紅色的小方塊,p.Name中的p是紅色的。 和A)它不起作用。 B)我不確定它將返回sortedList作爲按_priceLevels.Name排序的_assignmentControls的排序版本。編輯:當我把鼠標懸停在「加入」時,我得到了「IEnumerable System.Linq.Enumerable.Join(這個Enumerable,IEnumerable,Func,Func ....」方法的類型參數不能從。!查詢我研究,現在
感謝您尋找
將聯接中的'a'更改爲'a.ID'。 –
@newStackExchangeInstance - 我改爲:在a.ID上的_priceLevels中加入p等於p.ID,現在a.ID中的a也是紅色。這讓我感到困惑,因爲我應該能夠引用ArrayList的那個字段。 – BClaydon
我認爲你需要在末尾選擇 –