如何使用Lambda实现这一点



我在写Lambda表达式时遇到了问题,我的情况是这样的。我有一个名为FromStruct的表

CREATE TABLE [dbo].[formStruct](
    [id] [bigint] IDENTITY(1,1) NOT NULL,
    [fieldName] [nvarchar](150) NOT NULL,
    [fieldValue] [nvarchar](200) NOT NULL,
GO

表的示例如下:

id | Name | Value
1  | John | 87
2  | James| 35
3  | Chris| 22

我有一个字符串数组,比如

string[] names ={"John","James","Joe"}

我想要实现的是为以下任务构建三个不同的Lambda表达式:1-一个lambda表达式返回数组中字段名不是的所有记录。结果应该是"Chris | 52",因为Chris不在names数组中。

2-一个lambda表达式,返回names数组中字段名所在的所有记录。结果应该是"John | 87" and "James | 35"

3-一个lambda表达式,用于删除 names数组中字段名所在的所有记录。它应该导致"John | 87" and "James | 35"被从表中删除。

我已经创建了一个您需要的示例。请随意将其发布在测试应用程序中,然后为您的应用程序进行必要的更改:

void Main(){
List<Test> test = new List<Test>();
test.Add(new Test{ID=1,Name="John",Value=87});
test.Add(new Test{ID=2,Name="James",Value=35});
test.Add(new Test{ID=3,Name="Chris",Value=52});
string[] names ={"John","James","Joe"};
var notContains  = test.Where (t =>!names.Contains(t.Name) );

var contains = test.Where (t => names.Contains(t.Name));

 var delete = test.RemoveAll(t=>names.Contains(t.Name));
}
   public  class Test{
  public int ID{get;set;}
  public string Name{get;set;}
  public int Value {get;set;}
}

你可以尝试下面的查询,这只是逻辑,如果需要的话做一些修改。

//创建数据库实体

//结果1获取数组中没有名称的数据

var result1 =(from u in dbEntities.formStruct.AsEnumerable()
        where !names.Any(s => s == u.fieldName)
         select u
         ).ToList();

//result 2获取数组

中有名字的数据
var result2 =(from u in dbEntities.formStruct.AsEnumerable()
        where names.Any(s => s == u.fieldName)
         select u
         ).ToList();

//这里你将得到List对象的结果。从这里你可以打印你需要的文本。

var result = formStruct.Where(w => names.Contains(w)).ToList();
formStruct.RemoveAll(u => names.Contains(u.fieldName)); 

//删除记录后可以打印所需的文本。

相关内容

  • 没有找到相关文章

最新更新