2017-02-08 9 views
2

Employeeのコレクションは、FirstName,LastName,Departmentのものがあります。私はLastNameの文字列をコンマで区切って渡しています。 LastName"Sharma,Gupta"として選択されているデータをフィルタリングするには、where句を使用します。誰かが私を助けることができますか?上記方法において動的値のLinqクエリ

Employeeクラス

public class Employee 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public string Department { get; set; } 
    public string EmpID { get; set; } 
} 

public IQueryable<Employee> GetEmpData(String filterExpression) 
{ 
    IQueryable<Employee> data = GetEmployeeData(); 
    data = from da in data 
      where (da.LastName == "Sharma") 
      select da; 
    return data; 

} 

Iは、単一の値を問い合わせることができます。 filterExpressionには、コンマで区切られたLastNameのリストが含まれています。誰かがwhere節でfilterExpressionの使い方を教えてもらえますか?

答えて

2

あなたの文字列を分割して使用.Contains

names = filterExpression.Split(","); 
IQueryable<Employee> data = GetEmployeeData(); 
data = from da in data 
     where names.Contains(da.LastName) 
     select da; 

あなたは全体のオブジェクトを返すと、より読みやすいかもしれないメソッドの構文を使用してその部分だけを投影していないので:

return GetEmployeeData().Where(item => names.Contains(item.LastName)); 
+0

ありがとうございます。それは魅力のように働いた:-) – Nilesh

+0

@Nilesh - あなたは歓迎です:)解決してupvotingとして質問をマークしてみてください:) –

0

もしあなたfilterExpressionは文字列であり、名前はコンマで区切られています。次に例のようにfilterExpressionの名前リストに姓が含まれているかどうかを確認するクエリを変更します。

public IQueryable<Employee> GetEmpData(String filterExpression) 
{ 
    List<string> names = filterExpression.Split(","); 
    return GetEmployeeData().Where(names.Contains(da.LastName)); 
} 
+0

それはコンパイルすることを確認しましたか? –

関連する問題