到目前为止,这是我的代码,从SQL服务器返回一些数据:
try
{
connection.Open();
cmd.CommandText = "select * from dbo.contact";
SqlDataReader dr = cmd.ExecuteReader();
List<person> persons = new List<person>();
person person;
while (dr.Read())
{
person = new person();
persons.Add(person);
}
persons.Count();
}
catch {
}
我接下来想要的是使用LINQ从列表中提取特定记录。例如,linq返回所有具有DName ='D'的人。
以下是对象的代码:
public class person
{
public string idvalue { get; set; }
public string DName { get; set; }
public string FName { get; set; }
}
欢迎任何帮助!
答案 0 :(得分:1)
看起来您正在寻找以下内容。它将返回一个带有一个结果的IEnumerable
public class Person
{
public string idvalue { get; set; }
public string DName { get; set; }
public string FName { get; set; }
}
List<Person> persons = new List<Person>();
persons.Add(new Person { DName = "A" });
persons.Add(new Person { DName = "B" });
persons.Add(new Person { DName = "C" });
persons.Add(new Person { DName = "D" });
var result = persons.Where(p => p.DName == "D");
result.Dump();
答案 1 :(得分:0)
我就是这样做的:
static void Main(string[] args)
{
List<person> FilteredPeople = GetPeople("D");
}
static List<person> GetPeople(string condition)
{
try
{
connection.Open();
using (SqlCommand command = new SqlCommand("select * from dbo.contact WHERE DName LIKE @mycondition", connection))
{
cmd.Parameters.Add(new SqlParameter("mycondition", condition));
SqlDataReader dr = cmd.ExecuteReader();
List<person> persons = new List<person>();
while (dr.Read())
{
person p = new person();
p.idValue = dr["Id"].ToString();
p.DName = dr["DName"].ToString();
p.FName = dr["FName"].ToString();
persons.Add(p);
}
return persons;
}
}
catch { }
}
正如其他人所指出的那样,最小化数据库的负载是明智的,因此最好在SQLCommand上插入条件,以便只绘制必要的记录。
编辑:woops忘了关闭连接,我建议插入另一个&#34;使用&#34; sqlConnection的子句,一旦到达结束就自行处理(使用(SqlConnection connection = new SqlConnection(connectionString)) {})