- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
private IEnumerable<CharacteristicValue> GetCharacteristicValues(IQueryable<CharacteristicValue> allCharacteristicValues, int characteristicId)
{
var characteristicValues = new CharacteristicValue[userIds.Length];
for (var i = 0; i < userIds.Length; i++)
{
characteristicValues[i] = allCharacteristicValues.FirstOrDefault(cv => cv.UserId == userIds[i] && cv.CharacteristicId == characteristicId); // Todo: Try to replace with a single query.
}
return characteristicValues;
}
Драсьте, нашёл в коде такую вот какашку. Как видите параметр allCharacteristicsValues реализует интерфейс IQuarable из EF. То бишь каждый раз, когда будет вызываться метод FirstOrDefault будет делаться запрос к базе. В идеале это должно было бы выглядеть так:
var characteristicValues = allCharacteristicValues.Where(cv => cv.CharacteristicId == characteristicId && userIds.Contains(cv.UserId));
Но при такой реализации размер масива пользователей и значение может разниться:
Values:
val1
val2
val3
Users:
1
2
3
4
5
Для первого же варианта результат будет выглядеть так:
Values:
val1
val2
val3
null
null
Users:
1
2
3
4
5
Собственно всё )))) Надеюсь подсоветуете чего-нибудь хорошего ;)
и не надо туда ракоту заманивать, и так средний уровень упал до печатающей обезьяны
Неправильное. Для таких вопросов больше подойдут
ответы Мейл.ру и виошечка гугля. Тем более они на русском.
ничего не напоминает?
http://stackoverflow.com/questions/525194/linq-inner-join-vs-left-join
Да чего так скромно-то? Говори четко, по делу и в лицо: все тут пидарасы, а ты один - д'Артаньян.
>я не один
Тут сидит не более 25 завсегдатаев (я и 20 насчитать не могу). Остальные - залетные. Согласно твоему утверждению только один человек на гкоде знает шарп.
Получили противоречие. Q.E.D.
Спасибо за снипет ;) К сожалению, мне не помог :)