public void FilterByIds_String()
        {
            List <String> ids = new List <String> {
                "9I", "10I"
            };

            IQueryable <TestModel> actual   = datalist.FilterByIds(datalist.GetModels(), ids);
            IQueryable <TestModel> expected = datalist.GetModels().Where(model => ids.Contains(model.Id));

            Assert.Equal(expected, actual);
        }
        public void FilterByIds_NoIdProperty_Throws()
        {
            TestDatalist <NoIdModel> testDatalist = new TestDatalist <NoIdModel>();

            DatalistException exception = Assert.Throws <DatalistException>(() => testDatalist.FilterByIds(null, null));

            String expected = $"'{typeof(NoIdModel).Name}' type does not have key or property named 'Id', required for automatic id filtering.";
            String actual   = exception.Message;

            Assert.Equal(expected, actual);
        }
        public void FilterByIds_IntegerKey()
        {
            TestDatalist <NumericModel> testDatalist = new TestDatalist <NumericModel>();

            for (Int32 i = 0; i < 20; i++)
            {
                testDatalist.Models.Add(new NumericModel {
                    Value = i
                });
            }

            IQueryable <NumericModel> actual = testDatalist.FilterByIds(testDatalist.GetModels(), new List <String> {
                "9", "10"
            });
            IQueryable <NumericModel> expected = testDatalist.GetModels().Where(model => new[] { 9, 10 }.Contains(model.Value));

            Assert.Equal(expected, actual);
        }