私のデータベースの特定のエンティティを照会する正しい方法を見つけるのに苦労します。パラメータ(LINQ、SQL、C#)を使用した式
public class TeamMember
{
public Guid TeamId { get; set; }
public Guid ManagerUserId { get; set; }
...
}
私は私のチームで「TeamManager」を照会したいいくつかの位置で:私は次のように見えるテーブルTeamMemberを持っています。
public TeamMember GetTeamManager(Guid teamId, List<TeamMember> teamMembers)
{
return teamMembers.FirstOrDefault(member => member.TeamId == teamId && member.ManagerUserId == null);
}
私は例えば(ない実際のコード)式でメソッドを使用する場合は、
...
// IQueryable<TeamMember>
teamMembers.Where(member => member.team.GetTeamManager(teamId, teamMembers))
それはメモリオブジェクトにのため正常に動作しますが、これは、エンティティフレームワークとの組み合わせでは動作しません。 、本当のdbオブジェクトです。
そこで私は、静的な表現を試してましたが、私は、変数などとの組み合わせで静的表現を使用する任意の解決策を見つけることができませんでした:
// this should be an ideal solution
Expression<Func<TeamMember, bool>> exp = teammember => teamMember.TeamId == **CUSTOM_VARIABLE** && teamMember.ManagerUserId == null;
teamMembers.Where(exp)
私は表現を再利用したいのですが、私もしたいです変数を変更することができます。私の目標は、だから私の問題で私を助けてください
teamMembers.ToList().Where(member => member.team.GetTeamManager(teamId, teamMembers))
(私が間違っているなら、私を修正)次はうまくいくための間でオブジェクトの作成を避けるためですが、あまり効率的である:)。 ありがとうございます!
ありがとうございます、私は似たようなことを試しましたが、どこかで失われました。おそらく、これはIQueryable要素でのみ動作することを指摘しておきます。 – Muarl