olmalıdır:
var query = from obj_i in set1
join obj_j in set2 on
new {
JoinProperty1 = obj_i.SomeField1,
JoinProperty2 = obj_i.SomeField2,
JoinProperty3 = obj_i.SomeField3,
JoinProperty4 = obj_i.SomeField4
}
equals
new {
JoinProperty1 = obj_j.SomeOtherField1,
JoinProperty2 = obj_j.SomeOtherField2,
JoinProperty3 = obj_j.SomeOtherField3,
JoinProperty4 = obj_j.SomeOtherField4
}
ana gereksinimleri şunlardır: anonim içinde Mülkiyet isimleri, tipleri ve sipariş Nesnelerinizi' e katılmadan eşleşmelidir.
Katılmalarda AND' OR'leri vb. Kullanamazsınız. Sadece object1, object2'ye eşittir. Bu linqpad örnekte
Daha ileri şeyler:
class c1
{
public int someIntField;
public string someStringField;
}
class c2
{
public Int64 someInt64Property {get;set;}
private object someField;
public string someStringFunction(){return someField.ToString();}
}
void Main()
{
var set1 = new List<c1>();
var set2 = new List<c2>();
var query = from obj_i in set1
join obj_j in set2 on
new {
JoinProperty1 = (Int64) obj_i.someIntField,
JoinProperty2 = obj_i.someStringField
}
equals
new {
JoinProperty1 = obj_j.someInt64Property,
JoinProperty2 = obj_j.someStringFunction()
}
select new {obj1 = obj_i, obj2 = obj_j};
}
isim ve mülkiyet düzeni hitaben adresleme türleri döküm/dönüştürme/ayrıştırma/çağırma yöntemlerinin vb Bu her zaman LINQ ile çalışmayabilir yoluyla basit sağlanabilir edilir EF veya SQL veya NHibernate, çoğu yöntem çağrıları kesinlikle işe yaramaz ve çalışma zamanında başarısız olur, bu yüzden YMMV. Bunun nedeni, anonim nesnelere ait salt okunur özelliklerine kopyalanmalarıdır, bu nedenle ifadeniz birleştirme özelliklerinde doğru türde değerler ürettiği sürece - iyi olmanız gerekir.
Am bu okunamaz var sadede diye düşünerek yanlış? Sadece biçimlendirme olabilir. Bu tamamen konu dışı ve bunun için özür dilerim. –
cevabınız varsa, lütfen bunu işaretleyin. Sorgunuzun çalışması için, değişkenlerinize aynı ismi verin ve bunları projeksiyonlarınıza (Zar Shardan'ın cevabındaki gibi) eşitlemeniz ve en iyi yanıt için p.campbell'in cevabındaki gibi nerede olduğunu düzeltin) – ericosg