public void Linq_Test() { using (var db = new LiteDatabase(new MemoryStream())) { var c1 = new User { Id = 1, Name = "Mauricio", Active = true, Domain = new UserDomain { DomainName = "Numeria" } }; var c2 = new User { Id = 2, Name = "Malatruco", Active = false, Domain = new UserDomain { DomainName = "Numeria" } }; var c3 = new User { Id = 3, Name = "Chris", Domain = new UserDomain { DomainName = "Numeria" } }; var c4 = new User { Id = 4, Name = "Juliane" }; var col = db.GetCollection<User>("Customer"); col.EnsureIndex(x => x.Name, true); col.Insert(new User[] { c1, c2, c3, c4 }); // a simple lambda function to returns string "Numeria" Func<string> GetNumeria = () => "Numeria"; var strNumeria = GetNumeria(); // sub-class Assert.AreEqual(3, col.Count(x => x.Domain.DomainName == "Numeria")); Assert.AreEqual(3, col.Count(x => x.Domain.DomainName == GetNumeria())); Assert.AreEqual(3, col.Count(x => x.Domain.DomainName == strNumeria)); // == != Assert.AreEqual(1, col.Count(x => x.Id == 1)); Assert.AreEqual(3, col.Count(x => x.Id != 1)); // member booleans Assert.AreEqual(3, col.Count(x => !x.Active)); Assert.AreEqual(1, col.Count(x => x.Active)); // methods Assert.AreEqual(1, col.Count(x => x.Name.StartsWith("mal"))); Assert.AreEqual(1, col.Count(x => x.Name.Equals("Mauricio"))); Assert.AreEqual(1, col.Count(x => x.Name.Contains("cio"))); // > >= < <= Assert.AreEqual(1, col.Count(x => x.Id > 3)); Assert.AreEqual(1, col.Count(x => x.Id >= 4)); Assert.AreEqual(1, col.Count(x => x.Id < 2)); Assert.AreEqual(1, col.Count(x => x.Id <= 1)); // and/or Assert.AreEqual(1, col.Count(x => x.Id > 0 && x.Name == "MAURICIO")); Assert.AreEqual(2, col.Count(x => x.Name == "malatruco" || x.Name == "MAURICIO")); } }
public void Linq_Test() { using (var file = new TempFile()) using (var db = new LiteDatabase(file.Filename)) { var c1 = new User { Id = 1, Name = "Mauricio", Active = true, Domain = new UserDomain { DomainName = "Numeria" }, OS = PlatformID.Xbox }; var c2 = new User { Id = 2, Name = "Malatruco", Active = false, Domain = new UserDomain { DomainName = "Numeria" }, OS = PlatformID.Win32NT }; var c3 = new User { Id = 3, Name = "Chris", Domain = new UserDomain { DomainName = "Numeria" }, OS = PlatformID.Win32NT }; var c4 = new User { Id = 4, Name = "Juliane", OS = PlatformID.Win32NT }; var col = db.GetCollection<User>("Customer"); col.EnsureIndex(x => x.Name, true); col.EnsureIndex(x => x.OS, false); col.EnsureIndex(x => x.Domains.Select(z => z.DomainName), false); col.Insert(new User[] { c1, c2, c3, c4 }); // a simple lambda function to returns string "Numeria" Func<string> GetNumeria = () => "Numeria"; var strNumeria = GetNumeria(); // == != Assert.AreEqual(1, col.Count(x => x.Id == 1)); Assert.AreEqual(3, col.Count(x => x.Id != 1)); // member booleans Assert.AreEqual(3, col.Count(x => !x.Active)); Assert.AreEqual(1, col.Count(x => x.Active)); // > >= < <= Assert.AreEqual(1, col.Count(x => x.Id > 3)); Assert.AreEqual(1, col.Count(x => x.Id >= 4)); Assert.AreEqual(1, col.Count(x => x.Id < 2)); Assert.AreEqual(1, col.Count(x => x.Id <= 1)); // sub-class Assert.AreEqual(3, col.Count(x => x.Domain.DomainName == "Numeria")); Assert.AreEqual(3, col.Count(x => x.Domain.DomainName == GetNumeria())); Assert.AreEqual(3, col.Count(x => x.Domain.DomainName == strNumeria)); // methods Assert.AreEqual(1, col.Count(x => x.Name.StartsWith("Mal"))); Assert.AreEqual(1, col.Count(x => x.Name.Equals("Mauricio"))); Assert.AreEqual(1, col.Count(x => x.Name.Contains("cio"))); // enum Assert.AreEqual(1, col.Count(x => x.OS == PlatformID.Xbox)); Assert.AreEqual(1, col.Count(x => x.OS == (PlatformID)5)); // Xbox Assert.AreEqual(1, col.Count(x => x.OS == (PlatformID)Enum.Parse(typeof(PlatformID), "Xbox"))); Assert.AreEqual(3, col.Count(x => x.OS == PlatformID.Win32NT)); // doesnt works... must be a better linq provider //var Platforms = new PlatformID[] { PlatformID.Xbox, PlatformID.Win32NT }; //Assert.AreEqual(4, col.Count(x => Platforms.Contains(x.OS))); // and/or Assert.AreEqual(1, col.Count(x => x.Id > 0 && x.Name == "Mauricio")); Assert.AreEqual(2, col.Count(x => x.Name == "Malatruco" || x.Name == "Mauricio")); } }