@CSharpChatЭта группа больше не существует

Страница 502 из 1888
Arseniy
08.03.2017
01:52:56
если ты формируешь включения, то надо использовать "ИЛИ"

а я чет так давно в деревьями выражений в сишарпе не работал, что не очень понимаю, как это просто сделать

потому вот так

Владимир
08.03.2017
01:58:42
Теперь наоборот, на единственном эксклуде возвращает ноль объектов.

Google
Arseniy
08.03.2017
01:59:06
а чо за запрос выходит?

Владимир
08.03.2017
02:00:00
{SELECT [Extent1].[Id] AS [Id], [Extent1].[Md5] AS [Md5], [Extent1].[Size] AS [Size], [Extent1].[Path] AS [Path], [Extent1].[OriginalName] AS [OriginalName], [Extent1].[CollectionId] AS [CollectionId] FROM [dbo].[File] AS [Extent1] WHERE ( NOT EXISTS (SELECT 1 AS [C1] FROM [dbo].[BindedTags] AS [Extent2] WHERE ([Extent2].[TagId] IN (42)) AND ([Extent2].[TargetId] = [Extent1].[Id]) )) AND ( EXISTS (SELECT 1 AS [C1] FROM ( SELECT 1 AS X ) AS [SingleRowTable1] WHERE 1 = 0 ))}

Arseniy
08.03.2017
02:02:26
https://gist.github.com/stdray/766441295cec0b7ed7bd5904abba04c8#file-q-cs-L23

добавил условия

стой

криво добавил

Владимир
08.03.2017
02:03:14
Стою

Arseniy
08.03.2017
02:03:56
https://gist.github.com/stdray/766441295cec0b7ed7bd5904abba04c8

так норм

Владимир
08.03.2017
02:07:16
Теперь инклуд 1 тега возвращает ноль объектов..

{SELECT [Extent1].[Id] AS [Id], [Extent1].[Md5] AS [Md5], [Extent1].[Size] AS [Size], [Extent1].[Path] AS [Path], [Extent1].[OriginalName] AS [OriginalName], [Extent1].[CollectionId] AS [CollectionId] FROM [dbo].[File] AS [Extent1] WHERE ( NOT EXISTS (SELECT 1 AS [C1] FROM [dbo].[BindedTags] AS [Extent2] WHERE [Extent2].[TargetId] = [Extent1].[Id] )) AND ( EXISTS (SELECT 1 AS [C1] FROM [dbo].[BindedTags] AS [Extent3] WHERE ([Extent3].[TagId] IN (42)) AND ([Extent3].[TargetId] = [Extent1].[Id]) ))}

Ну да, в эксклуде при нуле возвращается var query = tags;

Arseniy
08.03.2017
02:09:07
робит или как?

Google
Arseniy
08.03.2017
02:11:13
если робит, можно разобраться с забытым условием

Владимир
08.03.2017
02:12:55
Не, не робит.

Arseniy
08.03.2017
02:15:04
лел, понел

зря я эти хуйни объёдинил

Владимир
08.03.2017
02:16:49
да, тут условий пиздец наворачивается

Arseniy
08.03.2017
02:17:41
не, просто я туплю

Владимир
08.03.2017
02:18:32
if(!tagIds.Any() && !tagIdValues.Any() && !include) { query = (new List<BindedTag?)).AsQueryable(); } Добавил вот такую херню, инклуд заработал, но эксклуд теперь не совпадает с прежним вариантом. По количеству процентов на 10. Хз из-за чего.

{SELECT [Extent1].[Id] AS [Id], [Extent1].[Md5] AS [Md5], [Extent1].[Size] AS [Size], [Extent1].[Path] AS [Path], [Extent1].[OriginalName] AS [OriginalName], [Extent1].[CollectionId] AS [CollectionId] FROM [dbo].[File] AS [Extent1] WHERE ( NOT EXISTS (SELECT 1 AS [C1] FROM [dbo].[BindedTags] AS [Extent2] WHERE ([Extent2].[TagId] IN (42)) AND ([Extent2].[TargetId] = [Extent1].[Id]) )) AND ( EXISTS (SELECT 1 AS [C1] FROM [dbo].[BindedTags] AS [Extent3] WHERE [Extent3].[TargetId] = [Extent1].[Id] ))}

Я кажется понял. С таким запросом он не выберет файлы вообще без тегов. Хотя должен, если иклуд тегов нет.

Arseniy
08.03.2017
02:25:35
https://gist.github.com/stdray/766441295cec0b7ed7bd5904abba04c8

надеюсь базовая логика заробит

чому мне сраный гист порти форматирование непонятно, хоть студию запускай, чтобы мне сишурп отравняли

Владимир
08.03.2017
02:35:09
В общем, я сделал вот так: var query = files; if (excludeFilter != null && filterModes.Item2.Any()) query = query.Where(f => !excludeFilter.Contains(f.Id)); if (inclideFilter != null && filterModes.Item1.Any()) query = query.Where(f => inclideFilter.Contains(f.Id)); И оно заработало так как надо

Или нет

Arseniy
08.03.2017
02:39:52
ну ты запустил, чо я там понаписал?

Владимир
08.03.2017
02:40:44
Да

Он скипает вообще теги со значениями судя по скл

Arseniy
08.03.2017
02:43:48
а чо он сгенерил-то?

Владимир
08.03.2017
02:43:54
http://pastebin.com/HGpKY2Ed ну в общем, здесь мы таки что-то с кувери сделать должны

Google
Владимир
08.03.2017
02:44:04
иначе нахрена эта штука вообще

Arseniy
08.03.2017
02:44:50
жыза

починил, ссылка та же

https://gist.github.com/stdray/766441295cec0b7ed7bd5904abba04c8

Владимир
08.03.2017
02:50:46
Ну, без тегов со значениями все работает

а со значениями херня

{SELECT [Extent1].[Id] AS [Id], [Extent1].[Md5] AS [Md5], [Extent1].[Size] AS [Size], [Extent1].[Path] AS [Path], [Extent1].[OriginalName] AS [OriginalName], [Extent1].[CollectionId] AS [CollectionId] FROM [dbo].[File] AS [Extent1] WHERE ( NOT EXISTS (SELECT 1 AS [C1] FROM [dbo].[BindedTags] AS [Extent2] WHERE ([Extent2].[TagId] IN (42, 47)) AND ([Extent2].[TargetId] = [Extent1].[Id]) )) AND ( EXISTS (SELECT 1 AS [C1] FROM [dbo].[BindedTags] AS [Extent3] WHERE ([Extent3].[TagId] IN (175)) AND ([Extent3].[TagId] = @p__linq__0) AND (([Extent3].[Value] = @p__linq__1) OR (([Extent3].[Value] IS NULL) AND (@p__linq__1 IS NULL))) AND ([Extent3].[TargetId] = [Extent1].[Id]) ))}

Arseniy
08.03.2017
02:51:52
ммм

Владимир
08.03.2017
02:52:01
Выглядит вроде нормально

Arseniy
08.03.2017
02:52:59
> AND (@p__linq__1 IS NULL

это хуйня

чо у тебя за входные парамеры? ты не передал часом на один тэг одновременно нулл и значение?

Владимир
08.03.2017
02:54:44
не, подожди. все правильно же. OR (([Extent3].[Value] IS NULL) AND (@p__linq__1 IS NULL))) Эта херня стандартная при сравнении, типа либо значения равны, либо они оба нулл. Видимо нули он сравнить не может.

Oleg
08.03.2017
02:55:00
Кто-нибдуь уже ставил VS2017? И еще такой вопрос: ключ от vs 2015 Enterprise подойдет к enterprise 2017?

Владимир
08.03.2017
02:55:36
Oleg
08.03.2017
02:56:03
печааль

Arseniy
08.03.2017
02:57:45
@e1ee7 ненене, чо-то пошло не так (([Extent3].[Value] = @p__linq__1) OR (([Extent3].[Value] IS NULL) AND (@p__linq__1 IS NULL))

а бля, пропустил OR

хотя

Admin
ERROR: S client not available

Google
Владимир
08.03.2017
02:59:39




Arseniy
08.03.2017
03:01:00
а какие значения были на входе?

Владимир
08.03.2017
03:01:22
Одновременно не может быть

а какие значения были на входе?
ну там айди и значение

Такие, какие есть

а какие значения были на входе?
Ты въехал, в чем косяк? Опять через кондишен ебашить что ли

Arseniy
08.03.2017
03:06:01
понел

не всё собрал через или

закинул

Владимир
08.03.2017
03:13:45
Падаем

Ща посмотрю, где

Но я думаю на кондишенах

The parameter 't' was not bound in the specified LINQ to Entities query expression.

При попытке использования одновременно тега со значением в иклуде с тегом без значения

Если или то, или то, то все работает.

Они конфликтуют друг с другом?

Arseniy
08.03.2017
03:20:45
ну я хз, говорю же, что я 100 лет не использовал деревья выражения сишарпа

ща потестим

Владимир
08.03.2017
03:23:10
Меня выбурает уже, я, наверное, пойду отосплюсь. Линкани меня, чтобы я потом увидел. Ну и спасибо за помощь до текущего момента.

Google
Arseniy
08.03.2017
03:23:37
у меня не падает

но сонита~

Владимир
08.03.2017
03:26:03
у меня не падает
Эксепшен бросает энтети фреймворк, так что.

Но я ушел, да.

Arseniy
08.03.2017
03:33:02
сложна. надо играться с ентити)

думаю, что дело в том, что внутри цикла есть замыкание, а вне его нит, но не уверен

Алексей
08.03.2017
04:24:46
Нахера это здесь

Страница 502 из 1888

Эта группа больше не существует Эта группа больше не существует