Click here to Skip to main content
15,909,518 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
Hi,

How can i check the duplicate for lower case and upper case using linq.

My Linq :

SQL
var ExactDuplicate = from a in DuplicateNumber
                                 where !string.IsNullOrWhiteSpace(a.SerialNumber)
                                 group a by new { a.SerialNumber} into g
                                 where g.Count() > 1
                                 select new
                                 {
                                     g.Key.SerialNumber

                                 };


when i am checking for two numbers i.e.

upper case: TEST1
Lower case: test1.

the linq expression is not considering as duplicate from the above one

Regards,
basha
Posted

If I understand your question correctly, you aim for

C#
var ExactDuplicate = from a in DuplicateNumber
         where !string.IsNullOrWhiteSpace(a.SerialNumber)
         group a by new { SerialNumber = a.SerialNumber.ToLower() } into g
         where g.Count() > 1
         select new
         {
             g.Key.SerialNumber
         };


Cheers
Andi
 
Share this answer
 
Comments
inayat basha 28-May-12 7:50am    
Thx u.. it works.. but i have a doubt i have a linq query like this:
var DuplicatesDisplayPopUp = from a in DuplicateSerial
join b in ExactDuplicate
on a.SerialNumber equals b.SerialNumber
select new
{
Line = a.Line,
SAPLine = a.SAPLine,
SortCode = a.SortCode,
Description = a.Description,
SerialNumber = a.SerialNumber,
SerialNumberID = a.SerialNumberID,
SortCodeID = a.SortCodeID

};


i have the duplicates in lower case(which u have written the query) but when my main query will have duplicates in upper case and lower case(TEST1,test1). the above DuplicatesDisplayPopUp query how can i check
Andreas Gieriet 28-May-12 8:57am    
Try this:
static void Main()
{
List<X> dupNum = new List<X>()
{
new X() {SerialNumber="Test2"},
new X() {SerialNumber="test1"},
new X() {SerialNumber="Test1"},
new X() {SerialNumber="Test11"},
};
List<Y> dupSerial = new List<Y>()
{
new Y() { Line = 0, SerialNumber = "Test1" },
new Y() { Line = 1, SerialNumber = "Test2" },
new Y() { Line = 2, SerialNumber = "Test11" },
new Y() { Line = 3, SerialNumber = "test1" },
};


var exactDuplicate = from a in dupNum
where !string.IsNullOrWhiteSpace(a.SerialNumber)
group a by a.SerialNumber.ToLower() into g
where g.Count() > 1
select g.Key; // select the string

var dupPopup = from a in dupSerial
from b in exactDuplicate
where a.SerialNumber.ToLower() == b
select a; // select the matchin object

foreach (var item in exactDuplicate)
{
Console.WriteLine("{0}", item);
}
foreach (var item in dupPopup)
{
Console.WriteLine("{0} at {1}", item.SerialNumber, item.Line);
}
}

Please note how I simplified the exactDuplicate query.
BTW: Your naming of the items seem a bit confusing to me.

Cheers
Andi
Even easier using extension methods:

C#
public test(string a, string b)
{
    A = a;
    B = b;
}

var xy = new test[] {new test("aa", "this is one"), new test("Aa", "this is two"), new test("Ba", "this is three")};

var yz = xy.Where(i => !(string.IsNullOrEmpty(i.A))).GroupBy(j => j.A.ToUpper()).Where(k => k.Count() > 1);
 
Share this answer
 
see this link you may get some idea
http://forums.asp.net/t/1346775.aspx[^]
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900