Bir tablodan diğerine, çok fazla sayıda başka bir tabloya eşleme yapan bir tabloya sahip bir tablo var. Aşağıdakileri yapmak isterim:Öğelere linq, nerede bir cümlede? (iç kısımda)
var results = context.main_link_table
.Where(l => l.some_table.RandomProperty == "myValue" &&
l.some_table.many_to_many_table
.Where(m => m.RandomProperty == "myValue"));
Bunu nasıl başarabilirim? İlk bölüm işe yarayacak, ancak 'iç WHERE' olmadan denerken, many_to_many_table'ın özelliklerine erişemiyorum, ama "içteki" derler kesinlikle derlenmeyecek. Temelde aşağıdaki SQL sorgusu gibi bir şey başarmak istiyorum:
SELECT * from main_link_table
INNER JOIN some_table AS t1 ON t1.association = main_link_table.association
INNER JOIN many_to_many_table AS t2 ON t2.association = some_table.association
WHERE t1.RandomProperty = 'MyValue' AND t2.RandomProperty = 'MyValue'
Bu basit gibi görünen ama linq biri tek satırda bunu başarmak için bir yol bulamıyorum - birden fazla satır kullanarak istenen etki de döner ulaşmak için çok sonuç ve ben onların arasında döngü yapmak zorunda kalıyorum. Ben de böyle şeyler denedik:
var results = main_link_tbl.Include("some_table.many_to_many_table")
.Where(l => l.some_table.many_to_many_table.<property>
== "MyValue")
Ama bütün kayıtlar arasında arama etmemesi nedeniyle etkisini nullifies bir FirstOrDefault() eklemek sürece bu noktada many_to_many_table bir özelliğini seçemezsiniz.
çalışma yaptı Neama kodun birden fazla satır gerektirir ve arka planda linq-to-kuruluşlar çerçevesinde yaptırdığı SQL sorgusunda çok fazla sonuç verir:
var results = db.main_link_table.Include("some_table")
.Include("some_table.many_to_many_table")
.Where(s => s.some_table.RandomProperty
== "myValue")
.Select(s => s.some_table);
foreach(var result in results) {
var match_data = result.Where(s => s.many_to_many_table.RandomProperty
== "myValue");
}
Bu kod parçası, tüm dönecektir some_table içindeki satırlar, ilk Where koşuluna uygun ve ardından bir sonraki Where koşulunu uygular, açıkçası sadece many_to_many_table.RandomProperty öğesinin myValue değerine eşit olduğu tek bir satıra ihtiyaç duyarım.
Çalışır. – L2Eer
çok güzel. – qakmak