我試圖使用LINQ從現有的字典中創建一個新的字典,刪除過程中的重複。在C#中使用LINQ減少字典中的重複內容
現有的字典如下:
Dictionary<LoaderConfig, List<ColumnInfo>> InvalidColumns = new Dictionary<LoaderConfig, List<ColumnInfo>>();
public struct LoaderConfig
{
public string ObjectName { get; set; }
public DateTime? LoadDate { get; set; }
public string Load { get; set; }
public string TableName { get; set; }
}
public struct ColumnInfo
{
public string ColumnName { get; set; }
public string DataType { get; set; }
public int DataLength { get; set; }
}
我想直到結束是Dictionary<string, List<ColumnInfo>>
其中關鍵是LoaderConfig對象的表名屬性和ColumnInfo對象的列表中爲每個表名唯一。
我開始與此基礎上另一篇文章,我發現:
var alterations = InvalidColumns
.GroupBy(pair => pair.Key.TableName)
.Select(group => group.First())
.ToDictionary(pair => pair.Key.TableName, pair => pair.Value);
這並不因爲第一次的工作()。我想有一種方法可以使用LINQ擴展實現這一點,我只需要一些幫助就可以找到它。
謝謝!
Ouch。爲什麼'LoaderConfig'是一個'struct'?我認爲不應該。 – 2012-02-02 18:34:18
什麼是你的副本?它是表名和列名嗎?這是否是你的'LoaderConfig'和'ColumnInfo'的值? – 2012-02-02 18:45:19
重複將是一個LoaderConfig.TableName和ColumnInfo對象組合。 – Paul 2012-02-02 18:57:01