2015-11-04 37 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-表到对象 –