Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Lambda语句_C#_Lambda - Fatal编程技术网

C# Lambda语句

C# Lambda语句,c#,lambda,C#,Lambda,我想知道是否有更好的方法来实现这一点 我有一个对象,其中一个属性是字典。我有一组逗号分隔的值。我需要过滤字典,只获取字典值与至少一个值匹配的元素 这是我曾经尝试过的,但是有没有一种更短的方法 我只是想解释一下: filterValue是值列表(例如“4,5”) List vals=new List(); AddRange(filterValue.Split(新字符[]{',})); 列出bindingEntities=实体。其中( e=>{ foreach(e.ExtraProperties中的

我想知道是否有更好的方法来实现这一点

我有一个对象,其中一个属性是字典。我有一组逗号分隔的值。我需要过滤字典,只获取字典值与至少一个值匹配的元素

这是我曾经尝试过的,但是有没有一种更短的方法

我只是想解释一下: filterValue是值列表(例如“4,5”)

List vals=new List();
AddRange(filterValue.Split(新字符[]{',}));
列出bindingEntities=实体。其中(
e=>{
foreach(e.ExtraProperties中的KeyValuePair kvp)
{
if(vals.Contains(kvp.Value.ToString()))
返回true;
}
返回false;
}).ToList();
您可以使用任何功能:

List<string> vals = new List<string>();
vals.AddRange(filterValue.Split(new char[] { ',' }));
var bindingEntities = entities.Where(
             e => e.ExtraProperties.Any(
             kvp => vals.Contains(kvp.Value.ToString()))).ToList();
List vals=new List();
AddRange(filterValue.Split(新字符[]{',}));
var bindingEntities=实体。其中(
e=>e.ExtraProperties.Any(
kvp=>vals.Contains(kvp.Value.ToString()).ToList();
列表VAL=新列表();
AddRange(filterValue.Split(新字符[]{',}));
列出bindingEntities=实体。其中(
e=>e.ExtraProperties.Values.Any(
val=>vals.Contains(val.ToString()))
.ToList();

List vals=new List();
AddRange(filterValue.Split(新字符[]{',}));
List bindingEntities=来自实体中的e
从e.ExtraProperties.Values中的val
其中vals.Contains(val.ToString())
选择e;

您不只是查询dictionary对象有什么原因吗

var result = filterValue.Where(d => d.Value.Contains(val.ToString()).ToList();

现在,您有了包含筛选器的dictionary对象,这样您就可以使用它们,而不必经过额外的步骤来构造一组您并不真正需要的字符串数组。

好吧,您不需要将
拆分的结果放入列表中,只需执行
.Split(','))
。根据
filterValue
中的值的多少,可能更值得使用
HashSet
而不是
List
。事实上,数组同样支持
Contains()
方法,因此创建
List
也毫无意义:
var vals=filterValue.Split(new char[]{','});
。太好了!又短又干净!如果您删除
列表
声明,并使用从
string.Split
返回的
string[]
,甚至可以将其缩短。我认为需要修复ToString()周围的括号,以便它能够compile@Slugart不,它们很好。真的,Any()返回bool,还有ToList()方法-试着编译它。ExtraProperties没有值Property ExtraProperties是Dictionary对吗?@VanoMaisuradze我错了吗?我忘了它是Dictionary。所以答案是否定的:)好吧,如果你认为这个否决票是我的,那就接受我的否决票)祝你好运
List<string> vals = new List<string>();
vals.AddRange(filterValue.Split(new char[]{','}));
List<T> bindingEntities = entities.Where(
                                         e => e.ExtraProperties.Values.Any(
                                             val => vals.Contains(val.ToString())))
                                  .ToList();
List<string> vals = new List<string>();
vals.AddRange(filterValue.Split(new char[]{','}));
List<T> bindingEntities = from e in entities
                          from val in e.ExtraProperties.Values
                          where vals.Contains(val.ToString())
                          select e;
var result = filterValue.Where(d => d.Value.Contains(val.ToString()).ToList();