C# 具有select、Where、Count和Distinct的C LINQ Lambda查询

C# 具有select、Where、Count和Distinct的C LINQ Lambda查询,c#,linq,lambda,C#,Linq,Lambda,我是linq的新手,我需要一个问题的帮助。我在一个数据表中有3列。我需要从col3中获得唯一值的计数,其中col1和Col2包含某些值。这是我尝试的最后一段代码,但它不起作用。有人能帮我吗 谢谢 AD = dt.AsEnumerable() .Where(x => x.Field<string>("Col1").Equals("Value1") || x.Field<string>("Col2").Equals("Value2")

我是linq的新手,我需要一个问题的帮助。我在一个数据表中有3列。我需要从col3中获得唯一值的计数,其中col1和Col2包含某些值。这是我尝试的最后一段代码,但它不起作用。有人能帮我吗

谢谢

AD = dt.AsEnumerable()
    .Where(x => x.Field<string>("Col1").Equals("Value1") 
             || x.Field<string>("Col2").Equals("Value2"))
    .Select(s => s.Field<string>("Col3")
    .Distinct().Count());

我在.Selects=>s.FieldCol3处缺少一个右括号,请尝试以下操作:

AD = dt.AsEnumerable()
    .Where(x => x.Field<string>("Col1").Equals("Value1") 
             || x.Field<string>("Col2").Equals("Value2"))
    .Select(s => s.Field<string>("Col3")) // <-- add this
    .Distinct().Count();   // <-- remove this
我已经使用sqlite网络库在一些测试用例上测试了这一点,它似乎可以工作。
虽然已经有了一个解决方案——它们使用不同的样式,所以我决定将其发布到

@user2219930:注意,您的代码编译后做了一些不同的事情:它选择了字符串字段col3中不同字符的数量-
var q1  = (from persons in _db.Table<Person>()
            where persons.firstName==fname && persons.lastName==lname group
 persons.age by persons.age ).Count();