C# 不要像列表那样尝试遍历C中的元素,您需要使用表达式树,以便生成SQLWHERE子句。我确实实现了BuildUserObjectFromIDataRecord。但唯一的问题是,脚本不需要查找某个用户,而是必须获取所有记录,然后在所有记录中查找必要的记录。 v
C# 不要像列表那样尝试遍历C中的元素,您需要使用表达式树,以便生成SQLWHERE子句。我确实实现了BuildUserObjectFromIDataRecord。但唯一的问题是,脚本不需要查找某个用户,而是必须获取所有记录,然后在所有记录中查找必要的记录。 v,c#,lambda,find,C#,Lambda,Find,不要像列表那样尝试遍历C中的元素,您需要使用表达式树,以便生成SQLWHERE子句。我确实实现了BuildUserObjectFromIDataRecord。但唯一的问题是,脚本不需要查找某个用户,而是必须获取所有记录,然后在所有记录中查找必要的记录。 var user = User.Find(a => a.LastName == "Brown"); public T Find(Predicate<T> match) { if (match == null)
不要像
列表
那样尝试遍历C中的元素,您需要使用表达式树,以便生成SQLWHERE
子句。我确实实现了BuildUserObjectFromIDataRecord。但唯一的问题是,脚本不需要查找某个用户,而是必须获取所有记录,然后在所有记录中查找必要的记录。
var user = User.Find(a => a.LastName == "Brown");
public T Find(Predicate<T> match)
{
if (match == null)
{
ThrowHelper.ThrowArgumentNullException(ExceptionArgument.match);
}
for (int i = 0; i < this._size; i++)
{
if (match(this._items[i]))
{
return this._items[i];
}
}
return default(T);
}
public static User Find(User match, string orderBy = "")
{
string query = "";
if (!String.IsNullOrEmpty(match.FirstName)) query += "first_name='" + match.FirstName + "'";
if (!String.IsNullOrEmpty(match.LastName)) query += "last_name='" + match.LastName+ "'";
return Find(query + (!String.IsNullOrEmpty(orderBy) ? orderBy : ""));
}
var user = User.Find(new User { FirstName = "Bob", LastName = "Brown" });
Predicate<User> Finder = delegate(User user)
{
return user.LastName == "Brown";
}
var User = User.Find(Finder);
public IEnumerable<T> Get(Expression<Func<T, bool>> condition)
{
if (condition.Body.NodeType == ExpressionType.Equal)
{
var equalityExpression = ((BinaryExpression)condition.Body);
var column = ((MemberExpression)equalityExpression.Left).Member.Name;
var value = ((ConstantExpression)equalityExpression.Right).Value;
var table = typeof(T).Name;
var sql = string.Format("select * from {0} where {1} = '{2}'", table, column, value);
return ExecuteSelect(sql);
}
return Enumerable.Empty<T>();
}
public static User Find(User match, string orderBy = "")
{
string query = "";
if (!String.IsNullOrEmpty(match.FirstName)) query += "first_name='" + match.FirstName + "'";
if (!String.IsNullOrEmpty(match.LastName)) query += "last_name='" + match.LastName+ "'";
return Find(query + (!String.IsNullOrEmpty(orderBy) ? orderBy : ""));
}
var user = User.Find(new User { FirstName = "Bob", LastName = "Brown" });
public static IEnumerable<User> Find(Predicate<User> match)
{
//I'm not sure of the name
using (var cn = new NpgsqlConnection("..your connection string..") )
using (var cmd = new NpgsqlCommand("SELECT * FROM Users", cn))
using (var rdr = cmd.ExecuteReader())
{
while (rdr.Read())
{
var user = BuildUserObjectFromIDataRecord(rdr);
if (match(user)) yield return user;
}
}
}
var users = User.Find(a => a.LastName == "Brown");