我想通过一个Web服务返回一个列表,该服务接受一个更新提供列表的SQL的字符串。我对建立列表并不太熟悉,但我的课程中已有一个列表。同样,我想通过网络服务返回此列表。
我的班级中的当前列表:
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;
}
网络服务中的虚拟列表:
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服务列表中返回Name和ID字段。
我认为它会是这样的:
[WebMethod]
public IList<string> SkillsList(string like)
{
IList<string> output = new List<string>();
output = Skills.GetSkillsList(like);
return output;
}
但我知道这是不正确的。
感谢任何帮助!
答案 0 :(得分: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;
}
答案 1 :(得分: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();
}
}