2017-03-02 7 views
0

私は、データベースからのデータを持つ2つのテーブル、既存の演算子を持つテーブル、既存のユーザーを持つ1つのテーブルを持つこのページの演算子を持っています。ユーザーが既に演算子である場合は、その行を表に隠す必要があります。ここに私のコードは次のとおりです。データセットを含むデータローリングフィルタ配列asp net

のC#:

 var userDetailsList = new List<ContactPartial>(); 
     TellusAPI.TellusUserDetails userDetails; 

     var operators = _administrationSystem.GetOperatorsInformation(userId); //DataSet 
     var getUser = webSearch.DoSearchForNameAndNumber(userId, txtSearchForOperator.Text, false, "", "", false, false, out userDetails); //Array 

     if (getUser == null) 
     { 
      userDetailsList.Add(new ContactPartial(userDetails)); 
      rptAdd.DataSource = null; 
     } 

     else 
     { 
      userDetailsList = getUser.Select(x => new ContactPartial(x)).ToList(); 

      var dv = new DataView(operators.Tables[0]); 

      foreach (var Operator in userDetailsList) 
      { 
       if (!userDetailsList.Contains(Operator)) continue; 
       dv.RowFilter = "ID = " + Operator.Id; 
      } 

      rptAdd.DataSource = userDetailsList; //Repeater 
     } 

クラス:

/// <summary> 
/// Class for converting. 
/// </summary> 
public class ContactPartial 
{ 
    public long Id { get; set; } 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public string CompanyName { get; set; } 
    public string Email { get; set; } 

    public ContactPartial(TellusUserDetails tud) 
    { 
     if (tud == null) 
     { 
      return; 
     } 

     Id = tud.UserID; 
     FirstName = tud.FirstName; 
     LastName = tud.LastName; 
     CompanyName = tud.Organisation.Description; 
     Email = tud.Email; 
    } 

    public ContactPartial(TellusSearchUserInfo tsi) 
    { 
     if (tsi == null) 
     { 
      return; 
     } 

     Id = tsi.ID; 
     FirstName = tsi.FirstName; 
     LastName = tsi.LastName; 
     CompanyName = tsi.CompanyName; 
     Email = tsi.Email; 
    } 
} 

だから私は今、これら両者を比較し、IDと行をフィルタ、それはまだすべての行を読み取ります。

+0

期待したことと何ができないかについて、サンプルデータと予想される結果といくつかの説明をコードに提供できますか? –

+0

データベース内のユーザーを検索するときに、既にoperatorテーブルに含まれているユーザーを除外したいと考えられます。私はそれを知るべきIDを持っています。 – Malphai

+0

@ChetanRanpariyaコメントを読んでください。 – Malphai

答えて

1
 foreach (var Operator in userDetailsList) ****** 
     { 
      if (!userDetailsList.Contains(Operator)) continue; 
      dv.RowFilter = "ID = " + Operator.Id; 
     } 

私は命名規則にいくつかの問題があります。あなたは、何がオペレータであり、ユーザの詳細オブジェクトが何であるかを、間違いなく通知する必要があります。それらを混ぜないでください。

 foreach (var user in userDetailsList) 
     { 
      // Since dv is the one which contain operator details 
      if (dv.Select("ID= '" + user.Id + "'").Count > 0) 
      { 
      dv.RowFilter = "ID = " + user.Id; 
      } 
     } 
+0

あなたのコードが正しくない、IntelliSenseの 'DataView'のためのSelectがないので' dv.Select'を使うことはできません。 – Malphai

+0

あなたはdv.Table.Select – Sailor

関連する問題