Linq查询返回true或false
我有一个查询,它应该返回TRUE或FALSE。
var query = from c in db.Emp from d in db.EmpDetails where c.ID == d.ID && c.FirstName == "A" && c.LastName == "D" // It should return TRUE when this above statement matches all these conditions
我想将此查询结果附加到属性(字符串数据类型)
this.result = Conert.ToBoolean(query);
如何在LINQ中实现这一目标?
编辑:
EmpMapper类
public class EmpMapper { EmpEntities db; // ID column already exists in the DB private int ID; // I am creating this property to add it from the UI side, depending on the certain conditions in the query. That is why I created a separate class to map the existing ID from the DB bool result; public EmpMapper(int ID, bool result) { this.db = new EmpEntites(); this.ID = ID; var query = from c in db.Emp from d in db.EmpDetails where c.ID == d.ID && c.FirstName == "A" && c.LastName == "D" // It should return TRUE when this above statement matches all these conditions this.result = Convert.ToBoolean(query); } public int ID { get{return this.ID;} set{this.ID = value;} } public bool result { get{return this.result;} set{this.result = value;} } }
MainViewModel类
List empMapCol = new List(); private void Page_Loaded(object sender, RoutedEventArgs e) { var emp_query = from c in db.Emp orderby c.ID select a; List empCol = emp_query.ToList(); foreach(Emp item in empCol) { this.empMapCol.Add(new EmpMapper(item.ID, item.result)); } datagrid1.ItemsSource = empMapCol; } }
试试这个,
var query = (from c in db.Emp from d in db.EmpDetails where c.ID == d.ID && c.FirstName == "A" && c.LastName == "D" select c ).Any(); this.result = query; //no need to convert to boolean its already bool value
如果我理解正确,如果查询结果中的一个符合所有条件,则您希望得到。 在这种情况下尝试这样的事情:
var found = (from c in db.Emp from d in db.EmpDetails where c.ID == y.ID && c.FirstName == "A" && c.LastName == "D" select c).Any(); this.result = found.ToString();
您可以使用.Any()或.Count()。 Any()表现更好。 (检查这个问题 ,看看为什么)
。任何()
var query = from c in db.Emp from d in db.EmpDetails where c.ID == d.ID && c.FirstName == "A" && c.LastName == "D" // It should return TRUE when this above statement matches all these conditions this.result = query.Any().ToString()
。计数()
var query = from c in db.Emp from d in db.EmpDetails where c.ID == d.ID && c.FirstName == "A" && c.LastName == "D" // It should return TRUE when this above statement matches all these conditions this.result = (query.Count() > 0).ToString()
var query = from c in db.Emp from d in db.EmpDetails select new { c.ID == y.ID && c.FirstName == "A" && c.LastName == "D" };
如果你真的想要一个“真”或“假”字符串响应:
public string result { get { return db.Emp.SelectMany(c => db.EmpDetails, (c, d) => new {c, d}) .Where(@t => c.ID == y.ID && c.FirstName == "A" && c.LastName == "D") .Select(@t => c)).Any().ToString(); } }
但我建议将属性“result”设为bool并删除ToString()。 一旦你有一个bool,你总是可以在它上面做一个ToString()