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

问题描述:

我有以下数据表 - > 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 

在上面的数据,我要检查在上述数据表中是否存在Q3。如果存在,那么我想获得该季度的收入百分比和该人的姓名

如何使用LINQ编写查询?

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

要确定是否有任何比赛,你可以使用:

if (query.Any()) ... 

要得到名称与第一个项目的Income_Percent,你可以这样做:

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

做两件事只有1分贝的电话,你可以这样做:

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

欲了解更多信息,我建议https://*.com/questions/47740/what-are-some-good-linq-resources
此外,我爱LINQPad,你可能会觉得它很有趣。您可以轻松测试这些代码片段,并且可以试验LINQ语言和数据库。

+0

假设如果Q3在上述表格中不可用,那么如何首先处理验证,然后如果验证通过则获得结果。怎么样?? – venkat 2011-12-23 06:39:05

+0

这是一张数据表。请帮助我适当的数据类型也。因为这里Quarter是'string'类型,而Income_Percent是'int'数据类型。帮助我datatable.AsEnumerable – venkat 2011-12-23 06:47:32

+0

如果它不存在那么什么是验证? – V4Vendetta 2011-12-23 06:50:55

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

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

我也强烈推荐LINQPad - 很棒的一款软件。

+1

是的,我完全同意“方法语法”(这是什么技术上称为?)...我完全是面向对象的思想,所以我**认为在OOP **,和LINQ语法总是减慢我!然而,偶尔它不那么冗长,更容易阅读,所以它有它的用途。 – 2011-12-23 08:07:28

+0

是的,“查询语法”和“方法语法”是微软如何引用它们 - http://msdn.microsoft.com/en-us/library/bb397947.aspx。当我必须进行大量分组时,我发现自己使用查询语法。 – codeConcussion 2011-12-23 14:51:31