2015-11-04 68 views
0

假設我有SQL Server表表示例如文本挖掘表的列單元格,基於「##」符號刪除重複

enter image description here

員工的信息,我想要做的基於「##」符號去除重複項的度數列上的文本挖掘。

enter image description here

的LINQ to SQL

我使用LINQ to SQL,所以我打算在C#中的變量來得到這個數據context.And上串進行操作,再存放到位置!

規則:我需要更新數據或生成新表!

這是否正確的做法是否可行?需要關於這種方法的一些建議,或者歡迎任何其他建議

回答

1

所以看起來你需要根據「##」分隔符分割字符串,將不同的項目分開並放回到逗號分隔符中,這次劃定了?打破字符串然後LINQ的Distinct擴展方法的String.Split方法應該讓你只是唯一的。

假設你已經拿到了學位的文字在一個變量的地方:

var uniques = degree 
    .Split(new String[] { "##" }, StringSplitOptions.None) 
    .Distinct(); 

String.Split通常與單個字符分隔符的工作,但有允許在一個較大的字符串分割過載,因此你將不得不使用那個。

然後,您可以使用String.Join逗號分隔唯一的項目,或任何您需要做的事情。

編輯:道歉,我以爲你原來的問題是關於如何消除重複,而不是如何使用LINQ to SQL。

假設你已經設置了你的DataContext和對象模型,你只需要使用LINQ to SQL從數據庫中選擇你的對象,做出你需要的改變,然後調用SubmitChanges()在他們。

例如:

var degrees = from d in context.GetTable<Employee>() select d; 
foreach (var d in degrees) 
{ 
    d.Degree = String.Join(",", d.Degree 
     .Split(new String[] { "##" }, StringSplitOptions.None) 
     .Distinct()); 
} 
context.SubmitChanges(); 

如果你是新來的LINQ to SQL,它可能是值得的通過教程或兩個第一運行。 Here's part 1 of a pretty good series

最後,在您的編輯中提到您可以選擇在進行更改後創建新表 - 如果是這種情況,我會考慮將個別度存儲在表中,鏈接回員工記錄,而不是將它們存儲爲逗號分隔值。當然,這取決於你的需求,但是SQL被設計用於表和集合,所以你可以做得更好的字符串解析/處理越少。

祝你好運!

+0

我需要更新表中的現有數據 – Ranju

+0

@Ranju在答案中增加了一些關於LINQ to SQL的附加信息,希望有所幫助。看起來你可能第一次潛入LINQ to SQL,這是否正確?我認爲這是值得的,通過一個完整的教程或兩個 - 這是一個很好的系列的第1部分,以幫助您開始: http://www.codeproject.com/Articles/43025/A-LINQ-Tutorial -Mapping-表到對象 –