Консультация SQL, LINQ

У меня есть следующая консультация

SELECT tp.Nombre, 
       tp.IdTipoContacto
FROM TipoContacto tp 
LEFT JOIN Contacto c 
     on tp.IdTipoContacto = c.IdTipoContacto
WHERE NOT tp.Nombre = 'Compañia'

Это возвращает меня

Facturacion 2
Facturacion 2

В моей таблице TipoContacto только у меня есть два реестра, которые являются Составлением фактуры и Компанией в моей таблице Contacto у меня есть реестры, некоторые Facturacion, и только один compañia.

Я хочу добиться, чтобы моя консультация только возвратила реестры, которые остаются таблицы TipoContacto, когда id compañia уже существовало в другой таблице, в противоположном случае заносить в список два Facturacion и Compañia, adicionalmente, что был в Linq

Поскольку они видят консультацию, меня приносит два будь равен только он нуждался бы в одном в этом случае Спасибо

Что-то Добавочное, Чтобы Заставлять понимать меня лучше:

выбирать реестры, которые выполняли бы со следующими условиями Подмостки: Контакт, TipoContacto, Клиент

1. если уже heciste контакт с tipoContacto Компания, определенного Одинокого клиента заносить в список остальные.

2. если нет никакого контакта с tipoContacto Компания, клиента espefidicado заносить в список все включая компанию.

0
задан 09.09.2016, 01:03
3 ответа

Я бы это сделал в двух отличных консультациях подтверждая сначала, существует ли он уже compaГ±ia.

var query;

If (Contacto.Exists( c => c.TipoContacto.Name == "Compañia")
{
 query = Contacto.Where( c => c.TipoContacto.Name == "Compañia");

}else
{
query = Contacto;
}
1
ответ дан 24.11.2019, 13:27

Заключи твою консультацию LINQ таким образом:

var result = (from tp in TipoContacto
    from c in Contacto
            .Where(c => c.IdTipoContacto == tp.IdTipoContacto)
            .DefaultIfEmpty()
    where tp.Nombre != "Compañia"
    select new 
    {
        Nombre = tp.Nombre,
        IdTipoContacto = tp.IdTipoContacto
    }).Distinct();

приспособленный Ответ этих ответов в inglГ©s .

0
ответ дан 24.11.2019, 13:27
  • 1
    не Found, а именно, если мы говорим ему, чтобы он отличался от Приятеля и # 241; и #237; в, будешь приносить только те Facturaci и # 243; n, но если у нас нет контакта приятеля и # 241; и #237; в связанный, тогда он последовал бы за клиентом принося единственно Facturaci и # 243; n, y быть должным и # 237; чтобы приносить два – Kmiilo Berrio Montoya 09.09.2016, 01:00

ты можешь использовать Distinct.

var query = TipoContacto.Join(Contacto,
    c => c.IdTipoContacto,
    o => o.IdTipoContacto,
    (c, o) => new 
    {Nombre = c.Nombre, IdTipoContacto = o.IdTipoContacto})
        .Where(p=>p.Nombre != "Compañia").Distinct();

Я Предполагаю, что структура Клиента включает уже, будьте Имя или TipoContacto., если он asГ - единственный tendrГ-эксперт, который должен делать такой query как этот:

var isUsuario =UsuarioL.Where(p => p.Nombre == "Compañia").Select(p => p.Nombre);

Использует Ваш результат, чтобы решать, должен использовать ли ты where или нет. или distict, если tambiГ©n ты так этого требуешь.

var isUsuario =UsuarioL.Where(p => p.Nombre == "Compañia").Select(p => p.Nombre);
    if(isUsuario.FirstOrDefault() == "Compañia"){   
        var query = LTipoContacto.Join(LContacto,
        c => c.IdTipoContacto,
        o => o.IdTipoContacto,
        (c, o) => new 
        {Nombre = c.Nombre, IdTipoContacto = o.IdTipoContacto})
        .Where(p=>p.Nombre != "Compañia").Distinct();
    }
    else{
        var query = LTipoContacto.Join(LContacto,
        c => c.IdTipoContacto,
        o => o.IdTipoContacto,
        (c, o) => new 
        {Nombre = c.Nombre, IdTipoContacto = o.IdTipoContacto})
        .Distinct();
    }

https://dotnetfiddle.net/hocPvh

0
ответ дан 24.11.2019, 13:27
  • 1
    Оно не функционирует, у него нет правильного синтаксиса – Kmiilo Berrio Montoya 08.09.2016, 21:35
  • 2
    не Found, а именно, если мы говорим ему, чтобы он отличался от Приятеля и # 241; и #237; в, будешь приносить только те Facturaci и # 243; n, но если у нас нет контакта приятеля и # 241; и #237; в связанный, тогда он последовал бы за клиентом принося единственно Facturaci и # 243; n, y быть должным и # 237; чтобы приносить два – Kmiilo Berrio Montoya 09.09.2016, 15:54
  • 3
    @KmiiloBerrioMontoya измените ответ. – Jack 09.09.2016, 17:04