У меня есть начальный запрос, который я хочу изменить, чтобы увеличить детализацию в моих результатах. Но Visual Studio говорит, что мой запрос недействителен, и я не понимаю, почему. В основном я хочу сгруппировать свои данные в соответствии со 2 свойствами (столбцами), а также группировать одно из свойств по первым N символам.Linq to Sql, свойство group by 2 и подстрока
Первоначальный запрос, который работает:
List<PostalCode> codes = (from customer in bd.Customers
group customer by customer.postalcode.Substring(0, postalCodeLength) into postalCodes
select new PostalCode
{
Postal = postalCodes.Key,
Count = postalCodes.Count()
}).ToList();
return codes;
запрос отмеченную **, как неправильно, VS2010:
List<PostalCode> codes = (from customer in bd.Customers
group customer by new { **customer.postalcode.Substring(0, postalCodeLength)**, customer.CustomerGroupType}
into postalCodes
select new PostalCode
{
Postal = postalCodes.Key.postalcode,
CustomerGroupType = postalCodes.Key.CustomerGroupType,
Count = postalCodes.Count()
}).ToList();
return codes;
Действительно, это сработало. Мой вопрос к вам сейчас, почему второе свойство не требует имени? – guiomie
Компилятор может вывести имя, потому что это просто свойство, а не вызов метода. Если вы думаете об этом, компилятор может увидеть только «последнюю вещь», которая произошла в первом случае - она просто видит, что «метод подстроки был вызван, который возвращает строку» - он не может видеть, какое свойство вызывалось подстрокой. –