3
我有一個具有一對多關係的數據庫表[Table1]。
這個相關的表[Table2]有一個類型字段,它是一個字符串。linq-to-sql按連接表中的字符串列表組
Table 1 Table 2 Field | Type Field | Type ------|----- ---------|----- Id | int Id | int Table1Id | int Type | string
我想創建的類型的每個組合出現的頻率, 的總結和我試圖做的DB儘可能多的工作,因爲它是把一切都寫進內存太慢。
代碼我有工作,但似乎重複我。
items
.Where(x => x.Table2s.Count > 1)
.Select(x => new
{
Type = x.Table2s.Select(y => y.Type)
})
.ToList() // into memory as string.join has no translation into sql
.Select(x => new
{
Type = string.Join(",", x.Type) // no sql translation
})
.GroupBy(x => x.Type) // can't work on IEnumerable[string]
.Select(x => new Result()
{
Type = x.Key,
Count = x.Count()
})
.OrderByDescending(x => x.Count)
.ToList();
有沒有一種辦法按該字符串列表,這樣我可以做的DB分組,並減少在我的代碼
爲什麼你'的string.join()'所有類型和組在那?你是否試圖檢測具有相同字段定義的類型的重複項? –
@JeroenvanLangen對不起,我試圖顯示table1中的記錄已鏈接到表2類型的每種組合的次數: 類型a,b,c = 5 |類型a,c = 10 |類型d,f = 1 –
您可以將一個int字段添加到「表1」中,通過該字段可以製作標記枚舉的類型元素。然後你可以按他們的總數分組。 –