私はC#WPFアプリケーションでEntity Framework 6.0を使用しています。私は、Employeeエンティティを検索するには、このクエリを持っている:チェックボックスに基づくLINQ結合
var query = Context.Employees.AsQueryable();
switch (selectedColumnValue)
{
case "lastName":
query = query.Where(q => q.lastName == SearchValue);
break;
case "employeeID":
query = query.Where(q => q.personnelID == SearchValue);
break;
case "securityID":
query = query.Where(q => q.securityID == SearchValue);
break;
default:
return;
}
親エンティティEmployee
は、従業員が不在、またはアーカイブされたの休暇に、非アクティブであるかどうかを示すためにEmployeeStatus
エンティティに、いくつかの子行を有することができます。 Employee
エンティティの主キーはemployeeID
であり、外部キーはEmployeeStatus
です。ここで
は、Employeeエンティティの列です:ユーザーがチェックボックスをクリックすると
public int employeeID { get; set; }
public string personnelID { get; set; }
public string securityID { get; set; }
public string firstName { get; set; }
public string middleName { get; set; }
public string lastName { get; set; }
public string suffix { get; set; }
public string job { get; set; }
public string organizationalUnit { get; set; }
public string costCenter { get; set; }
public string notes { get; set; }
public System.DateTime createdDate { get; set; }
そして、ここではEmployeeStatusエンティティの列
public int employeeStatusID { get; set; }
public int employeeID { get; set; }
public int validEmployeeStatusID { get; set; }
public Nullable<System.DateTime> exitDate { get; set; }
public System.DateTime createdDate { get; set; }
だ「アーカイブの従業員が含まれていますか?」検索中にEmployeeStatus
への参加を行い、EmployeeStatus
列validEmployeeStatusID
が5
(アーカイブ済み)という条件を追加する必要があります。 LINQでこれをどうやってやりますか?
更新:私は、LINQのは、このようなIF文の中で上記switch
文の後に参加を追加する必要があります。
if (IncludeArchived)
{
// Add to Linq query here using method syntax
}
だからLINQのステートメントは、メソッドの構文を使用する必要があります。
あなたは '..Join()関数または.Concat()'を使用できませんでしたか? – MethodMan
ありがとう、@MethodMan。 '.Join()'は 'Where()'句を使ってビルドされた後、クエリの最後に移動するだけでしょうか? – Alex
EFを使用している場合は、EmployeeStatusの従業員のナビゲーションプロパティが必要です。 – Shoe