. . WHERE. , . Linq To SQL SQL, WHERE .
, , .
public class CustomRowType
{
public int ID { get; set;}
public string Subscriber { get; set; }
public int SubscribedTo { get; set; }
}
First, an example using extension methods. That is how I usually prefer to do it.
public void GroupTest()
{
List<CustomRowType> testData = new List<CustomRowType>();
testData.Add(new CustomRowType() { ID = 1, Subscriber = "Subscriber 1", SubscribedTo = 40 });
testData.Add(new CustomRowType() { ID = 2, Subscriber = "Subscriber 2", SubscribedTo = 1 });
testData.Add(new CustomRowType() { ID = 3, Subscriber = "Subscriber 3", SubscribedTo = 2 });
testData.Add(new CustomRowType() { ID = 4, Subscriber = "Subscriber 4", SubscribedTo = 2 });
var grp = testData.GroupBy(
row => row.SubscribedTo,
(key, row) => new
{
Data = row,
KeyCount = testData.Count(i => i.SubscribedTo == key)
}
);
var output = grp
.Where(g => g.KeyCount > 1)
.SelectMany(g => g.Data
.Select(d => d.ID.ToString() + "(" + d.Subscriber + ") -> " + d.SubscribedTo.ToString()+" with (" + g.KeyCount.ToString() + ") total subscriptions" ))
.ToList();
listBox1.Items.Clear();
output.ForEach(s => listBox1.Items.Add(s));
}
Next, an example of the syntax of the request.
public void GroupTest()
{
List<CustomRowType> testData = new List<CustomRowType>();
testData.Add(new CustomRowType() { ID = 1, Subscriber = "Subscriber 1", SubscribedTo = 40 });
testData.Add(new CustomRowType() { ID = 2, Subscriber = "Subscriber 2", SubscribedTo = 1 });
testData.Add(new CustomRowType() { ID = 3, Subscriber = "Subscriber 3", SubscribedTo = 2 });
testData.Add(new CustomRowType() { ID = 4, Subscriber = "Subscriber 4", SubscribedTo = 2 });
var grp = (
from d in testData
group d by d.SubscribedTo into g
select g
);
var output = grp
.Where(g => g.Count() > 1)
.SelectMany(g => g
.Select(d => d.ID.ToString() + "(" + d.Subscriber + ") -> " + d.SubscribedTo.ToString()+" with (" + g.Key.ToString() + ") total subscriptions" ))
.ToList();
listBox1.Items.Clear();
output.ForEach(s => listBox1.Items.Add(s));
}
source
share