C# 只包含一次符号的LINQ

C# 只包含一次符号的LINQ,c#,asp.net,linq,C#,Asp.net,Linq,需要您的帮助:我有一个数据表,其中包含如下数据行: test1 test1:1 test1:1:1 test1:2 我只需要选择包含“:”的行一次。 结果应该是: 测试1:1 测试1:2 你知道怎么做吗?? 我被困在: var result = dTable.AsEnumerable().Where(dr => dr.Field<string>("Name").Contains(":")); var result=dTable.AsEnumerable()。其中(dr=>d

需要您的帮助:我有一个数据表,其中包含如下数据行:

test1
test1:1
test1:1:1
test1:2
我只需要选择包含“:”的行一次。 结果应该是: 测试1:1 测试1:2

你知道怎么做吗?? 我被困在:

var result = dTable.AsEnumerable().Where(dr => dr.Field<string>("Name").Contains(":"));
var result=dTable.AsEnumerable()。其中(dr=>dr.Field(“Name”)。包含(“:”);
,其中“Name”是列名

提前感谢您

var result=dTable.AsEnumerable()
var result = dTable.AsEnumerable()
  .Where(dr => dr.Field<string>("Name").Count(z=>z==':')==1);
其中(dr=>dr.Field(“Name”).Count(z=>z==':')==1);

var result=dTable.AsEnumerable()
.Where(dr=>dr.Field(“Name”).Where(z=>z==':').Count()==1);

var result=dTable.AsEnumerable()
其中(dr=>dr.Field(“Name”).IndexOf(':'))==dr.Field(“Name”).LastIndexOf(':')&&dr.Field(“Name”)包含(“:”);

您可以将字段内容转换为字符数组,然后计算得到“:”的次数

var result = dt.AsEnumerable()
               .Where(dr => dr.Field<string>("Name")
               .ToCharArray()
               .Count(c => c == ':') == 1);
var result=dt.AsEnumerable()
.Where(dr=>dr.Field(“名称”)
.ToCharArray()
.Count(c=>c==':')==1);
试试这个:

var result=dTable.AsEnumerable()。其中(dr=>dr.Field(“Name”).Count(f=>f==':')==1);
使用LINQ,使用
x.Count()
非常简单

如果要在没有LINQ的情况下执行此操作,请尝试以下操作:

var result=dTable.AsEnumerable()。其中(dr=>dr.Field(“Name”).Split(“:”).Length-1==1);

请参阅顶部的答案,其中有一些类似的内容。我通常不使用LINQ,所以如果我的代码不起作用,请原谅我。希望这有帮助

谢谢你,罗伯特
var result = dTable.AsEnumerable()
  .Where(dr => dr.Field<string>("Name").IndexOf(':') == dr.Field<string>("Name").LastIndexOf(':') && dr.Field<string>("Name").Contains(":"));
var result = dt.AsEnumerable()
               .Where(dr => dr.Field<string>("Name")
               .ToCharArray()
               .Count(c => c == ':') == 1);