2011-10-26 16 views
0

私は、リストを提供するSQLを更新する文字列を受け取るWebサービスを介してリストを返したいと思います。私はリストを作ることにあまり慣れていませんが、私は既にクラスにリストを持っています。再度、このリストをWebサービスに戻したいと思います。ASP.NETのWebサービスから条件付きリストを返すにはどうすればよいですか?

私のテーブルクラスで私の現在のリスト:私は名前とWebサービスのリストでIDフィールドを返すしたい

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Services; 

[WebService(Namespace = "http://tempuri.org/")] 
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 

[System.Web.Script.Services.ScriptService] 
public class AutoComplete : System.Web.Services.WebService 
{ 
    [WebMethod] 
    public IList<string> GetSkills(string contains) 
    { 

     IList<string> output = new List<string>(); 
     output.Add("Apple"); 
     output.Add("Ajax"); 
     output.Add("Alpha"); 
     output.Add("Alphred"); 
     return output;  
    } 
} 

:Webサービスにおける

static public List<Skills> GetSkillsList(string like) 
{ 
    List<Skills> thelist = new List<Skills>(); 

    string sql = "SELECT * FROM Skills WHERE SkillName LIKE '%" + like + "%'"; 

    SqlDataReader dr = DBUtil.FillDataReader(sql); 

    while (dr.Read()) 
    { 
     Skills obj = new Skills(); 

     obj.skillID = Convert.ToInt32(dr["skillID"].ToString()); 
     obj.skillName = Convert.ToString(dr["skillName"].ToString()); 
     obj.skillReviewed = Convert.ToBoolean(dr["skillReviewed"].ToString()); 
     obj.skillActive = Convert.ToBoolean(dr["skillActive"].ToString()); 

     thelist.Add(obj); 
    } 
    return thelist; 
} 

ダミーリスト。

私はそれはようなものになるだろうと思うだろう:

[WebMethod] 
public IList<string> SkillsList(string like) 
{ 
    IList<string> output = new List<string>(); 

    output = Skills.GetSkillsList(like); 

    return output; 
} 

が、私は、これは間違っている知っています。

ご協力いただきましてありがとうございます。

答えて

1

あなたが提供したWebMethodでこれを行う方法は次のとおりです。示唆するように、IDと名前を保持する新しいクラスが最適です。 Listを使用する必要がある場合は、区切り文字列を使用できますが、

public class Pair 
{ 
    public string ID { get; set; } 
    public string Name { get; set; } 
} 

[WebMethod] 
public IList<Pair> SkillsList(string like) 
{ 
    IList<Skills> mySkills = new List<Skills>(); 
    IList<Pair> output = new List<Pair>(); 
    mySkills = Skills.GetSkillsList(like); 

    foreach(Skills currentSkill in mySkills) 
    { 
     Pair p = new Pair(); 
     p.ID = currentSkill.ID; 
     p.Name = currentSkill.Name; 

     output.Add(p); 
    } 

    return output; 
} 
0

私はIDとNameプロパティだけを持つ別のクラスを作成し、そのクラスのリストを作成して呼び出し元に返します。私はサンプルのコンソールアプリケーションを作成しました。下記のコードを見て、それが役に立ったら教えてください。

public class Test { 
     public int A { get; set; } 
     public string B { get; set; } 
     public string C { get; set; } 
    } 

    public class TestR { 
     public int A { get; set; } 
     public string B { get; set; } 
    } 

    class Program 
    { 

     static void Main(string[] args) 
     { 
      List<Test> list = new List<Test>(); 
      list.Add(new Test { A=1, B="AAAAA", C="BBBBB"}); 
      list.Add(new Test { A = 2, B = "BBBBB", C = "CCCCC" }); 
      list.Add(new Test { A = 3, B = "CCCCC", C = "DDDDD" }); 

      List<TestR> r = new List<TestR>(); 
      list.ForEach(l=> r.Add(new TestR { A= l.A, B=l.B })); 
      Console.ReadLine(); 
     } 
    } 
関連する問題