LINQ için oldukça yeni ve başımdaki bazı tutarsızlıklar davranışta bulunamıyor. Bilgili herhangi bir girdi çok takdir edilecektir. SO ve benzeri yerlerde benzer sorunlar görüyorum ama yardım etmiyorlar.LINQ - 'Önceden kullanılan ve kanıtlanmış sorgu koşuluyla ifade ifadesi tercüme edilemedi'
Çok basit bir kurulumum var - bir şirket masası ve bir adres tablosu. Her şirket 0 veya daha fazla adrese sahip olabilir ve> 0 olanı ana adres olarak belirtilmelidir. Ben bir dış birleştirme kullanarak ve buna göre seçim deyimini değiştirerek, 0 adresleri var durumları ele almaya çalışıyorum.
Lütfen şu anda çıktıyı doğrudan bir GridView'e bağladığımı unutmayın, bu nedenle tüm işlemleri sorguda tutmak istiyorum.
aşağıdaki eser
IQueryable query =
from comp in context.Companies
join addr in context.Addresses on comp.CompanyID equals addr.CompanyID into outer // outer join companies to addresses table to include companies with no address
from addr in outer.DefaultIfEmpty()
where (addr.IsMain == null ? true : addr.IsMain) == true // if a company has no address ensure it is not ruled out by the IsMain condition - default to true if null
select new {
comp.CompanyID,
comp.Name,
AddressID = (addr.AddressID == null ? -1 : addr.AddressID), // use -1 to represent a company that has no addresses
MainAddress = String.Format("{0}, {1}, {2} {3} ({4})", addr.Address1, addr.City, addr.Region, addr.PostalCode, addr.Country)
};
YAPAR ama bu ", ,()
"
yüzden
MainAddress = (addr.AddressID == null ? "" : String.Format("{0}, {1}, {2} {3} ({4})", addr.Address1, addr.City, addr.Region, addr.PostalCode, addr.Country))
olmak MainAddress alanını güncellenerek olarak GridView boş adresini görüntüler şimdi Could not translate expression
hatası alıyorum ve bir grup otomatik olarak oluşturulmuş kodu r benim için çok az anlamına geliyor.
MainAddress'e eklediğim koşul, AddressID'deki çalışma koşulundan farklı değil, bu yüzden burada neler olduğunu kimse anlatabilir mi?
Herhangi bir yardım büyük beğeni topladı.
soruya "spewey otomatik olarak oluşturulan kod" eklemek istediğiniz olabilir. – Bert