如何在数据表的列中检查值是否存在?

时间:2011-12-23 06:31:28

标签: c# linq c#-4.0 .net-3.5 .net-4.0

我有以下DataTable - > dtFinance

ID Account Name Quarter FY   Income_Percent  
1  ABC     Ram  Q1      2011  50  
2  XYZ     Hari Q4      2011  35  
3  ABC     Rohit Q3     2011  40  
4  ABC     Ram  Q2      2011  25  
5  XYZ     Hari Q3      2011  60  

在上面的数据中,我想检查上面的DataTable中是否存在Q3。如果存在,那么我想获得该季度的Income_Percent和该人的姓名

如何使用LINQ编写查询?

2 个答案:

答案 0 :(得分:3)

var query = (
  from myRow in _db.dtFinance
  where myRow.Quarter == "Q3"
  select new { myRow.Name, myRow.Income_Percent }
);

要确定是否有任何匹配项,请使用:

if (query.Any()) ...

要获取第一项的Name和Income_Percent,您可以执行以下操作:

var firstRow = query.First();
string name = firstRow.Name;
int incomePercent = firstRow.Income_Percent;
...

要同时执行两次db调用,您可以执行以下操作:

var firstRow = query.FirstOrDefault();
if (firstRow != null) {
    string name = firstRow.Name;
    int incomePercent = firstRow.Income_Percent;
    ...
}

有关详细信息,我建议https://stackoverflow.com/questions/47740/what-are-some-good-linq-resources
另外,我喜欢LINQPad,你可能会发现它很有趣。您可以轻松地测试这些代码片段,并可以试用LINQ语言和数据库。

答案 1 :(得分:1)

@Scott Ripley的答案就是你想要的。我只是想使用方法语法抛出另一个linq示例。您看到的大多数示例都是查询语法,但我通常更喜欢简单方案的方法语法。

var row = _db.dtFinance.FirstOrDefault(x => x.Quarter == "Q3");
if (row != null)
{
    var name = row.Name;
    var incomePercent = row.Income_Percent;
    ...
}

我也强烈推荐LINQPad - 非常棒的软件。