Проблема
От: -Dm-  
Дата: 26.09.11 06:21
Оценка:
Что не могу сообразить как сделать аналог SQL запроса вида
SELECT * FROM USERS t1 WHERE EXISTS(SELECT * FROM UNITS t2 WHERE t1.ID = t2.ID_USER AND t2.NOTE = 2)

Пробовал так

var list = from t1 in db.GetTable<Users>() where db.GetTable<Units>().Any(t2 => t1.Id == t2.IdUser && t2.Note == 2) select p;
Re: Проблема
От: IT Россия linq2db.com
Дата: 26.09.11 13:50
Оценка:
Здравствуйте, -Dm-, Вы писали:

D>Пробовал так


И что?
Если нам не помогут, то мы тоже никого не пощадим.
Re[2]: Проблема
От: -Dm-  
Дата: 26.09.11 17:55
Оценка:
IT>И что?

'cannot be converted to SQL'
Re[3]: Проблема
От: IT Россия linq2db.com
Дата: 26.09.11 18:07
Оценка:
Здравствуйте, -Dm-, Вы писали:

IT>>И что?

D>'cannot be converted to SQL'

Что именно? Что-то у меня никак не получается воспроизвести.
Если нам не помогут, то мы тоже никого не пощадим.
Re[4]: Проблема
От: -Dm-  
Дата: 27.09.11 03:44
Оценка:
IT>Что именно? Что-то у меня никак не получается воспроизвести.

Есть два класса

    [TableName("STATISTIC_USER")]
    public class CStatisticUser
    {
        [Identity]
        [PrimaryKey]
        [MapField("ID")]
        public long Id;

        [MapField("ID_STATISTIC")]
        public long StatisticId;

        [MapField("ID_USER")]
        public string UserId;                               

        [MapIgnore]
        public string Caption;                              

        [MapField("ID_NATION")]
        public CCharacter.NationEnum Nation;                

        [MapField("ID_SPECIALIZATION")]
        public CCharacter.CharacterTypeEnum  SpecializationType; 

        [MapField("LEVEL")]
        public int Level;                                   

        [MapField("ID_TEAM")]
        public int Team;                                    

        [MapField("SCORE")]
        public int Score;                                   

        [MapField("MONEY")]
        public int Money;                                   

        [MapField("ID_STATE")]
        public CUserGame.UserState State;                   

        [Association(ThisKey = "Id", OtherKey = "UserId")]
        [XmlArray("Units")]
        [XmlArrayItem("Unit")]
        public List<CStatisticUnit> Units;                  
    }



    [XmlRoot("Root")]
    [TableName("STATISTIC")]
    public class CStatistic
    {
        [Identity]
        [PrimaryKey]
        [MapField("ID")]
        public long Id;

        [MapField("ID_MAP")]
        public string MapId;

        [MapIgnore]
        public string MapCaption;

        [MapField("START_DATE")]
        public DateTime StartDate;

        [MapField("END_DATE")]
        public DateTime EndDate;

        [MapField("SCORE_AVIA1")]
        public int ScoreAvia1;

        [MapField("SCORE_AVIA2")]
        public int ScoreAvia2;

        [MapField("SCORE_FLAG1")]
        public int ScoreFlag1;

        [MapField("SCORE_FLAG2")]
        public int ScoreFlag2;

        [XmlArray("Users")]
        [XmlArrayItem("User")]
        [Association(ThisKey = "Id", OtherKey = "StatisticId")]
        public List<CStatisticUser> Users;

        public CStatistic()
        {
       
        }

    }


Данные тяну так
var list = from p in db.GetTable<CStatistic>() where db.GetTable<CStatisticUser>().Any(p2 => p2.StatisticId == p.Id ) select p;


База postgres, BLtoolkit вирсия 4
Ошибка
"'value(Server1945.API.Message.StatisticUser.CStatisticUserMessage+<>c__DisplayClass0).db.GetTable().Any(p2 => (p2.StatisticId = p.Id))' cannot be converted to SQL."
Re[5]: Проблема
От: IT Россия linq2db.com
Дата: 28.09.11 17:15
Оценка:
Здравствуйте, -Dm-, Вы писали:

D>База postgres, BLtoolkit вирсия 4


В самой последней версии такое тоже происходит?
Если нам не помогут, то мы тоже никого не пощадим.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.