6

連結された他の2つのプロパティに基づく既存のエンティティタイプに新しいプロパティを作成できるかどうかは誰にもわかりませんか?

たとえば、My Person エンティティ タイプには、「ID」、「Forename」、「Surname」、「DOB」のフィールドがあります。

「フルネーム」という新しいフィールドを作成したい

Forenames + " " + Surname

したがって、「ID」、「Forename」、「Surname」、「DOB」、「Fullname」になります。

プログラムでLinqを使用してこれを行うことができることを知っています

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;

ただし、Linq to Entities を使用して、概念モデル レベルでこの作業を行いたいと思っています。

4

4 に答える 4

4

まだですが、もうすぐかもしれません。まず、提案されたクエリは、プロパティの有無にかかわらず、LINQ to Entities ではまったく機能しないことに注意してください。現時点では、Contains がサポートされていないためです。ただし、.NET 4.0 の新しいバージョンの Entity Framework は、LINQ to Entities クエリでカスタム メソッドをサポートすることになっています。これに関するビデオは PDC から見ることができます。基本的に、カスタム メソッドを 2 回記述する必要があります。コードで 1 回、データベースで 1 回 (計算フィールドなど)。詳細については、ビデオを参照してください。

于 2008-11-18T18:06:01.987 に答える
3

質問に答えてから何年も経ってからこれを読んだ人は:

ここには、より最新でより DRY に準拠した回答があります: Using a partial class property inside LINQ statement

于 2012-01-26T03:37:53.827 に答える
2

クレイグが考えたように、Contains が「機能する」理由は、IEnumerable.Contains ではなく String.Contains を呼び出しているためです。

于 2009-05-21T20:19:25.560 に答える
0

クレイグ、

ビデオを見てSarted、それからそれが1時間以上の長さであることに気づいたので、私がもっと時間があればそれを見なければならないでしょう。ただし、お知らせします。Containsは私にとっては問題なく機能しているようです。これが、LinqtoEntitiesによって生成されたSQLです。

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

それは御馳走を働かせるようです。連結フィールドに入力されたテキストが含まれている場合にCHARINDEXを使用してワークアウトします。これは、上記の場合は「Dave」でした。

ありがとうデイブ

于 2008-11-19T13:29:45.990 に答える