我想將SQL語句轉換成LINQ並有一定的難度。基本上,我試圖查詢保存產品導航數據的DataTable(ID爲&描述的4個類別級別,例如Men's> Jackets> Summer> Pullover)。導航類別應該按順序出現,而不是「重複」。我的意思是說,一旦數據行中出現描述時,它會再次發生,但一旦它變成另一個描述,它就不能變回以前的描述。我已經開發了訪問該SQL查詢,它似乎做什麼,我需要做對我的測試數據:重複LINQ/DataTable查詢
SELECT Count(Nav.Level1Text) AS CountOfLevel1Text, Nav.Level1ID, Nav.SO, Nav.DC, Nav.Language
FROM Nav
GROUP BY Nav.Level1ID, Nav.SO, Nav.DC, Nav.Language
HAVING Count(Nav.Level1Text) > 1;
這是我迄今爲止得到:
var query = from table in navTable.AsEnumerable()
group table by new
{
Cat1Id = table["Cat1Id"],
Cat1Text = table["Cat1Desc"],
SalesOrg = table["SalesOrg"],
DistChan = table["DistChan"],
Language = table["Language"]
}
into groupedTable
where groupedTable.Key.Cat1Text.Count() > 1 //Count doesn't exist
select new {Cat1Count = groupedTable.Key.Cat1Text.Count(), groupedTable.Key.Cat1Id, groupedTable.Key.SalesOrg,
groupedTable.Key.DistChan, groupedTable.Key.Language};
好像我非常接近,但是我對「哪裏」一塊有困難。我無法弄清楚如何獲得Level1Text的計數(沒有Cat1Text.Count方法,但是我將它留下來說明我認爲應該做什麼)。
編輯:所以我意識到我沒有解釋清楚,但查詢檢測到Cat1Id分配給2個不同的Cat1Desc時。這就是我所說的「重複」。例如,如果Cat1Id爲'1'且Cat1Desc爲'Mens',而Cat1Id爲'2'並且Cat1Desc爲'Womens',則該查詢應該讓我知道,因爲'Count(Cat1Desc)> 1'用不同的ID。
這裏的難點在於關係數據庫表沒有序列的概念,更不用說重複了。它知道重複,但。我想你想在你分組的五個字段中檢測出「Nav.Level1Text」的重複項。 – 2013-02-19 08:18:17