Я пытаюсь использовать метод расширения Join (...) для построения запроса на основе критериев, переданных методу.У меня ошибка в следующем:
public static IQueryable QueryItems(string param1, string param2, string param3)
{
IQueryable<tbl_Item> query = dataMap.tbl_ItemMap;
//Join is giving me the error: Cannot implicitly convert type
//System.Linq.IQueryable<AnonymousType#1> to System.Linq.IQueryable<tbl_Item>.
//An explilct conversion exists
query = query.Join(dataSet.Tables["tbl_Resource"].AsEnumerable(),
q => q.OriginalResourceID,
r => r.Field<int>("ResourceID"),
(q, r) => new { q, r });
if (!String.IsNullOrEmpty(param1))
query = query.Where(...);
if (!String.IsNullOrEmpty(param2))
query = query.Where(...);
if (!String.IsNullOrEmpty(param3))
query = query.Where(...);
var results = query.Select(result => new
{
Origin = result.OriginalResourceID, // needs to be a name from Tables["tbl_Resource"]
Current = result.CurrentResourceID, // needs to be a name from Tables["tbl_Resource"]
...,
...,
});
return results; // results are displayed in a DataGridView
}
Дополнительная информация о методе расширения Join показывает:
'a is new {tbl_Item q, DataRow r}
Я понимаю, что это, скорее всего, проблема.Означает ли это, что бессмысленно хранить DataTables в памяти для таких поисков?«tbl_Resource» содержит 4 столбца, 2 из которых являются ResourceID (ключ) и resourceName (что я хочу добавить в метод расширения Select).
Я не буду наивным и считаю, что яЯ реализую лучшую (читай наиболее эффективную) логику.Я могу работать с созданием словаря для метода Join, если это лучшее решение;однако, казалось бы, это даст мне ту же ошибку, что и сейчас.
Есть идеи?