Title here
Summary here
This article contains example code that shows the usage of the FilterTransformation component.
Note
This example shows how to filter data in a data flow with a strongly typed objects
public class MyRow
{
public int Id { get; set; }
public string Value { get; set; }
}
public void ExampleFilterPoco() {
var source = new MemorySource<MyRow>();
source.DataAsList.Add(new MyRow() { Id = 1, Value = "Test1" });
source.DataAsList.Add(new MyRow() { Id = 2, Value = "Test2" });
source.DataAsList.Add(new MyRow() { Id = 3, Value = "Test3" });
var filter = new FilterTransformation<MyRow>();
filter.FilterPredicate = row => {
return row.Id == 2;
};
var dest = new MemoryDestination<MyRow>();
source.LinkTo(filter).LinkTo(dest);
Network.Execute(source);
foreach (var row in dest.Data)
Console.WriteLine($"Id:{row.Id} Value:{row.Value}");
//Outputs
//Id:1 Value:Test1
//Id:3 Value:Test3
}
This example has the same effect as the previous code, but now we are using predicates in the LinkTo
methods.
var source = new MemorySource<MyRow>();
source.DataAsList.Add(new MyRow() { Id = 1, Value = "Test1" });
source.DataAsList.Add(new MyRow() { Id = 2, Value = "Test2" });
source.DataAsList.Add(new MyRow() { Id = 3, Value = "Test3" });
var dest = new MemoryDestination<MyRow>();
var voidDest = new VoidDestination<MyRow>();
source.LinkTo(dest, row => row.Id != 2);
source.LinkTo(voidDest, row => row.Id == 2);
Network.Execute(source);
foreach (var row in dest.Data)
Console.WriteLine($"Id:{row.Id} Value:{row.Value}");
//Outputs
//Id:1 Value:Test1
//Id:3 Value:Test3
/* Delete below here */
Assert.Collection(dest.Data,
r => Assert.True(r.Id == 1 && r.Value == "Test1"),
r => Assert.True(r.Id == 3 && r.Value == "Test3")
);
This example shows how the third parameter of the LinkTo
method can be used to discard unwanted records.
public void ExampleFilterLinkingWithPredicateAndImplicitVoid() {
var source = new MemorySource<MyRow>();
source.DataAsList.Add(new MyRow() { Id = 1, Value = "Test1" });
source.DataAsList.Add(new MyRow() { Id = 2, Value = "Test2" });
source.DataAsList.Add(new MyRow() { Id = 3, Value = "Test3" });
var dest = new MemoryDestination<MyRow>();
source.LinkTo(dest, row => row.Id != 2, row => row.Id == 2);
Network.Execute(source);
foreach (var row in dest.Data)
Console.WriteLine($"Id:{row.Id} Value:{row.Value}");
//Outputs
//Id:1 Value:Test1
//Id:3 Value:Test3
}
This examples shows how the FilterTransformation
can be used with dynamic ExpandoObject
.
var source = new MemorySource();
dynamic r1 = new ExpandoObject();
r1.Id = 1; r1.Value = "Test1";
source.DataAsList.Add(r1);
dynamic r2 = new ExpandoObject();
r2.Id = 2; r2.Value = "Test2";
source.DataAsList.Add(r2);
dynamic r3 = new ExpandoObject();
r3.Id = 3; r3.Value = "Test3";
source.DataAsList.Add(r3);
var filter = new FilterTransformation();
filter.FilterPredicate = row => {
dynamic r = row;
return r.Id == 2;
};
var dest = new MemoryDestination();
source.LinkTo(filter).LinkTo(dest);
Network.Execute(source);
foreach (dynamic row in dest.Data)
Console.WriteLine($"Id:{row.Id} Value:{row.Value}");
//Outputs
//Id:1 Value:Test1
//Id:3 Value:Test3