好吧,我有一個大腦塊(如果你願意,感恩節前的陰霾)。我解構了一個整數來發現設置了哪些位(這是根據選定的列表框項目設置的)。所以如果我的整數值是11,那麼位1,2,4被設置。所以我解構了我的位掩碼來獲取設置的位。我可以把它放回整數列表或整數數組中。LINQ在一個類別的列表
這是我的問題。我有一個存儲過程轉到數據庫並返回一個類的列表。這個類是由我構造的,包含整數,字符串,基本上是我在課堂上需要的。該類查找匹配用戶輸入條件的記錄。我添加多選列表框(完成)並生成一個返回設置(完成)的位的整數值的位掩碼。我進行數據庫調用,並根據用戶輸入的條件獲取事務列表。我不想重寫/添加到我的存儲過程,因爲它用於其他地方的金額。我只想應用一些LINQ來搜索與列表中的選擇相匹配的所有記錄。
該列表將返回不同類型的TransactionTypes。我得到了事務類型的行號(14個事務類型,14位,1-14是我所識別的行號)。我做了一個循環來將行號整數添加到整數數組。
for (int i = 0; i <= //countOfSelections is 14; i++)
{
int num = 0;
num = (//int of decimal value constructed & (1 << i));
if (num != 0)
bits[i] = num;
}
我有一個數據庫調用,使var數據類的列表。無論如何循環使用鏈接並根據選擇在.where子句中應用循環?那麼在類中的RowNumber等於位[]中的行號?
編輯:這是更多的代碼。
我的列表框中有選擇(14種交易)。
當用戶按Ctrl +在他們點擊交易類型和搜索的,我再補充一點選擇爲整數列表的交易類型行號。因此,如果選擇一個二和四個選項,我的列表包含1,2,4。我不希望有14個語句或傳遞14個值,因爲這是硬編碼的。 (如果我添加更多的數據庫表,那麼我必須改變這個地方)。
爲了防止自己不必爲此,我組裝位掩碼,並得到一個整數值(二進制小數)。我這樣做,像這樣:
int total = 0;
//Building the bit mask
for (int c = 0; c < optsNum.Count(); ++c)
{
for (int i = 0; i <= transTypeCount; i++)
{
if ((i +1) == optsNum[c])
total += (1 << i);
}
}
return total;
注意optsNum是我的一個包含用戶選擇的行數的整數列表。此外,transTypeCount是一個整數,它是我列表框中可能選擇的計數。所以再次,如果選項1,2,4被選中。我回到總將等於11
我再路過11的方法,在一些業務邏輯。這種方法還可以接收一些其他用戶選項(基本下拉框等)。
我有一個包含交易信息(包括數量,產品名稱和交易類型(我的行數))的一類。我的數據庫調用返回這個類的列表,它存儲在'var data'中。所以'數據'現在是這些類的列表。
在我的方法我現在有數據,需要根據用戶希望看到(這是我的十進制我從位掩碼做內)所選擇的交易類型進行過濾data.TransactionID。所以我需要解構我的位掩碼來找出哪些位被設置。 **我在上面的代碼中做了這個,並且bits []數組將包含一個整數集。再一次,1,2,4。
我想過濾數據,只有數據中的TransactionIDs包含在我的數組位[]中才能獲取數據。無論如何,我可以使用LINQ來搜索類,只組裝一個類的列表,該類中的事務ID等於我的bits []數組中的事務ID?這將成爲一個循環......就像循環遍歷位[]並選擇where transactionID = bits [i]。我對LINQ相當陌生,這讓我感到困惑。
你能否提供更多的代碼和明確最終的結果是什麼,你正在尋找? – 2010-11-24 16:40:30
是的,我會加我的問題 – Tom 2010-11-24 16:41:31