Adapter, SQL 2k, June 9 beta
tbl_Lookup_Application
ApplicationID - Identity, int
ParentApplicationID - int
Name - nvarchar(200)
(ID, ParentID, Name)
15398 0 0 Application
15399 15398 0.0 Application
15400 15399 0.0.0 Application
15401 15399 0.0.1 Application
15402 15399 0.0.2 Application
15403 15398 0.1 Application
15404 15403 0.1.0 Application
15405 15403 0.1.1 Application
15406 15403 0.1.2 Application
15407 0 1 Application
15408 15407 1.0 Application
15409 15408 1.0.0 Application
15410 15408 1.0.1 Application
15411 15408 1.0.2 Application
15412 15407 1.1 Application
15413 15412 1.1.0 Application
15414 15412 1.1.1 Application
15415 15412 1.1.2 Application
///
/// FetchAll_ApplicationCollection
///
EntityCollection<LookupApplicationEntity> _Application = new EntityCollection<LookupApplicationEntity>();
SortExpression sortExpression = new SortExpression(LookupApplicationFields.Name | SortOperator.Ascending);
_Application = new EntityCollection<LookupApplicationEntity>(new LookupApplicationEntityFactory());
using (DataAccessAdapter adapter = new DataAccessAdapter())
{
adapter.FetchEntityCollection(_Application, null, 0, sortExpression);
}
// Set up hierarchy
Dictionary<int, LookupApplicationEntity> _dictionary = new Dictionary<int, LookupApplicationEntity>(_Application.Count);
foreach (LookupApplicationEntity _ApplicationItem in _Application)
_dictionary.Add(_ApplicationItem.ApplicationId, _ApplicationItem);
foreach (LookupApplicationEntity _ApplicationItem in _Application)
{
LookupApplicationEntity parent;
_dictionary.TryGetValue((int)_ApplicationItem.ParentApplicationId, out parent);
if (parent != null)
{
parent.ChildApplicationCollection.Add(_ApplicationItem);
_ApplicationItem.ParentApplication = parent;
}
}
///
/// Fetch_ApplicationCollection(MetadataCriteria mc)
///
EntityCollection<LookupApplicationEntity> filtered_Application =
new EntityCollection<LookupApplicationEntity>(new LookupApplicationEntityFactory());
// Construct predicate
IPredicateExpression predicate = new PredicateExpression();
predicate.Add(LookupApplicationFields.Name % "1.%");
List<int> matching_Application = _Application.FindMatches(predicate);
Data:
The problem:
This is some code I've consolidated that I'm using to lookup partial matches. (I realize that it's doing the filtering in .net instead of SQL. The data pulled in the app will rarely change, and so is cached, which I've removed from the code above.)
The problem is that FindMatches isn't returning anything. (I expect it to return 8 matches, every name that starts with '1.' If I set the Name to "0 Application", then I'll get a match, but if I set it to "1.1 Application", then I still won't get anything. I have tried things with and without the %'s.
Thanks