2008-11-18 19 views
6

Birbirine eklenen 2 diğer özelliğe dayanan var olan bir Varlık Türü'nde yeni bir özellik oluşturmanın mümkün olup olmadığını bilen var mı?Bağlantılar ve birleştirilmiş özellikler için Linq

E.g. Benim Kişi Varlık Tip I

Forenames + " " + Surname 

Yani ben sonuna kadar olan "FullName" adlı yeni bir alan oluşturmak istiyoruz "Kimlik", "Forename", "Soyadı", "DOB"

bu alanları vardır "ID", "Forename", "Soyad", "DOB", "Tam Ad" ile.

Ben programlı gerçekten benim için bu işi yapmak için varlıkları Linq to kullanmak istiyorum Ancak Ardından

var results = from p in db.People 
select new { 
ID = p.ID, 
Forename = p.Forename, 
Surname = p.Surname, 
DOB = p.DOB, 
Fullname = p.Forename+ " " + p.Surname 
}; 

var resultsAfterConcat = from q in results 
where q.Fullname.Contains(value) 
select q; 

gibi bir şey arayarak yani bu kullanarak Linq yapabileceğini biliyorum Kavramsal Model seviyesi.

cevap

4

Henüz değil, ama belki yakında. Öncelikle, önerilen sorgunuzun LINQ'daki varlıklar için, mülk olsun veya olmasın, hiçbir zaman işe yaramayacağını unutmayın, çünkü, şu anda, İçeriği desteklemiyor. Ancak, .NET Framework'teki Varlık Çerçevesinin yeni sürümünün, LINQ'daki Varlıklar sorgusundaki özel yöntemleri desteklemesi bekleniyor. a video about this from PDC'u görebilirsiniz. Esas olarak, özel yöntemi iki kez yazmanız gerekir; Bir kez kodda ve bir kere veritabanınızda (ör., hesaplanan bir alanda). Daha fazla bilgi için videoyu izleyin.

0

Craig, video izlerken

sarted, o zaman uzun bir saatten fazla var, bu yüzden daha fazla zamana sahip izlemek zorunda kalacak fark etti.

SELECT 
1 AS [C1], 
[Extent1].[PeopleID] AS [PeopleID], 
[Extent1].[Forenames] AS [Forenames], 
[Extent1].[Surname] AS [Surname] 
FROM [dbo].[People] AS [Extent1] 
WHERE (CHARINDEX(N'Dave', [Extent1].[Forenames] + N' ' + [Extent1].[Surname])) > 0 

Bir tedavi iş gibi görünüyor: Sadece olsa bildirmek için .. benim için ok çalışıyor görünüyor içerir, burada varlıkları Linq araya getirilen SQL bulunuyor. Concatinated alan yukarıdaki durum "Dave" idi Girilen metin içeriyorsa egzersiz charIndex kullanma. Craig düşünce gibi, IEnumerable.Contains String.Contains çağırarak değil, çünkü sen için

Teşekkür Dave

+0

. Kendisinin işe yaramadığını doğruladım ve aynı şeyi yazan MSDN dökümanları: http://msdn.microsoft.com/en-us/library/bb738638.aspx –

2

nedeni "eserlerini" içerir. Sorunuza yanıt edildikten sonra bu yüzden uzun yıllar okumak oluyor herkes için