小编war*_*990的帖子

使用Newtonsoft自定义JSON字符串输出

我正在尝试使用Newtonsoft JsonConverter序列化C#DataTable

代码:

JsonConvert.SerializeObject(dt); //dt is DataTable
Run Code Online (Sandbox Code Playgroud)

我得到的结果是:

[
  {
    "Name": "Tiger Nixon",
    "Position": "System Architect",
    "Address": "Edinburgh",
    "No": "5421"
  },
  {
    "Name": "Garrett Winters",
    "Position": "Accountant",
    "Address": "Tokyo",
    "No": "8422"
  }
]
Run Code Online (Sandbox Code Playgroud)

我想要的结果是:

{
  "data": [
    [
      "Tiger Nixon",
      "System Architect",
      "Edinburgh",
      "5421"
    ],
    [
      "Garrett Winters",
      "Accountant",
      "Tokyo",
      "8422"
    ]
  ]
}
Run Code Online (Sandbox Code Playgroud)

是否可以使用Newtonsoft自定义输出?我试着写我自己的代码通过序列化数据表foreachDataTable,但性能是白天和黑夜相比Newtonsoft.

任何帮助将不胜感激

c# json.net

4
推荐指数
1
解决办法
1218
查看次数

如果我只在HttpGet上验证它是否安全?

控制器:

[HttpGet]
public ActionResult Edit(int id)
{
    var obj = _uow.User.Get(id);
    if (obj.Name != User.Identity.Name) //validate
    {
        return new HttpStatusCodeResult(HttpStatusCode.Forbidden);
    }

    return View(obj);
}

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit(UserViewModel model)
{
    var obj = Mapper.Map<UserViewModel, User>(model); //map between EF Entity and ViewModel

    _uow.User.Update(obj);
    _uow.Save();
    return RedirectToAction("Index");
}
Run Code Online (Sandbox Code Playgroud)

如您所见,我的HttpGet方法检查当前用户是否是数据库中的同一用户.但我HttpPost不做任何检查.这是否足够安全,或者我应该在两种方法中验证?

攻击者可以在不进行GET的情况下进行POST吗?

谢谢

c# security asp.net-mvc asp.net-mvc-5

4
推荐指数
1
解决办法
92
查看次数

LINQ方法如何使用Parent类中的附加列选择多个

我有一节课:

public class Parent
{
    public int ParentID { get; set; }
    public string ParentName { get; set; }
    public List<Child> Childs { get; set; }
}

public class Child
{
    public int ChildID { get; set; }
    public string ChildName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

有了Parent对象,这就是我获得所有Childs价值的方式.

Parent obj = GetParent();
PrintExcel(obj.SelectMany(sm => sm.Childs);
Run Code Online (Sandbox Code Playgroud)

但我也想ParentName在select命令中包含值,如何实现呢?

使用SQL查询,我可以这样做

SELECT
    p.ParentName,
    c.ChildName
FROM
    Parent p
    INNER JOIN Child c ON
        p.ParentID = c.ParentID
Run Code Online (Sandbox Code Playgroud)

c# linq

4
推荐指数
1
解决办法
1550
查看次数

一个表中有多个唯一键

我的数据库中有一个Product表,其中包含以下各列:

ProductId INT IDENTITY PRIMARY KEY
ProductCode VARCHAR(100) NOT NULL
ProductStamp VARCHAR(100) NOT NULL
Run Code Online (Sandbox Code Playgroud)

我需要ProductCode和ProductStamp都是唯一的,例如:

允许的

Code Stamp
---- -----
A001 S001
A002 S002
Run Code Online (Sandbox Code Playgroud)

不允许

Code Stamp
---- -----
A001 S001
A001 S002
Run Code Online (Sandbox Code Playgroud)

如何实现呢?非常感谢你

sql sql-server

3
推荐指数
1
解决办法
2967
查看次数

用户登录后更新声明

用户登录后是否可以更新索赔?我在我的网站上有前端和管理面板,基本上我用它claims来实现这个目的.如果用户像Susan在前端登录一样,我在我的代码中做了类似的事情:

var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);

userIdentity.AddClaim(new Claim("Id", this.UserName));
... //other claims here
Run Code Online (Sandbox Code Playgroud)

因此,当用户最终登录管理面板(当仍然在前端登录时)时,我只想添加更多声明,例如:

userIdentity.AddClaim(new Claim("BackEndId", this.UserName));
Run Code Online (Sandbox Code Playgroud)

怎么做到这一点?

c# asp.net-mvc asp.net-mvc-5 asp.net-identity asp.net-identity-2

3
推荐指数
1
解决办法
1913
查看次数

FirstOrDefault内联空值检查

我有以下代码:

var result = new Collection<object>();

result.Add(
     list.Select(s => new
     {
          s.Name,
          Rating = s.Performance.OrderByDescending(o => o.Year).FirstOrDefault().Rating
     })
);
Run Code Online (Sandbox Code Playgroud)

如果找不到记录Performance,它会给我NullException预期的,因为我试图Ratingnull价值中获取财产所以我的问题是如何设置null if FirstOrDefault()是否null获得Rating价值,如果没有.

谢谢

c# linq entity-framework entity-framework-6

3
推荐指数
1
解决办法
1974
查看次数

为什么"SELECT ISNULL(LEFT(NULL,8),'1234567890')"的结果"返回为'1'而不是'1234567890'?

我有这个问题

SELECT ISNULL(LEFT(NULL, 8), '1234567890')
Run Code Online (Sandbox Code Playgroud)

我得到的结果是'1'而不是'1234567890'.我错过了什么?

我正在使用SQL Server 2014.

sql sql-server

3
推荐指数
1
解决办法
148
查看次数

如果在查询语句中找不到,则将变量设置为 NULL

我有以下代码

DECLARE @a INT

SET @a = 1

SELECT TOP 1
    @a = id
FROM
    test
WHERE
    name = 'notexist'

SELECT @a
Run Code Online (Sandbox Code Playgroud)

如果语句没有找到任何行,变量@a仍然有值,如果语句没有找到任何行,是否可以在不添加before语句的情况下将变量设置为 null ?1SELECT@aSELECTSET @a = NULLSELECT

sql sql-server sql-server-2008

1
推荐指数
1
解决办法
2万
查看次数

是否可以将单个linq查询结果分配给多个变量?

我可以在TSQL中执行此操作

SELECT
    @TotalDays = COUNT(Days),
    @TotalHours = SUM(Hours)
FROM
    Schedule
WHERE
    GroupID = 1
Run Code Online (Sandbox Code Playgroud)

如何在单个查询中实现这一点,我当前的代码;

var totalDays = 0;
var totalHours = 0;

totalDays = _schedule.Count(c => c.GroupID == 1);
totalHours = _schedule.Where(w => w.GroupID == 1).Sum(s => s.Hours);
Run Code Online (Sandbox Code Playgroud)

这是无效的,因为它在数据库中调用2个单独的查询

c# linq entity-framework entity-framework-6

1
推荐指数
1
解决办法
121
查看次数

如何在react-hook-form中动态设置defaultValue

我有一个要编辑的页面Productprops值取自 API,并且来自父组件。如何将此值设置为我的Datepicker输入?因为defaultValuefromreact-hook-form是在自定义挂钩中的第一次渲染时缓存的,所以我得到了null.

const ProductEdit = (props) => {
  const { product } = props;
  const { control, register, handleSubmit, formState: { errors } } = useForm();

  ........

  <Controller
     control={control}
     name='dateLaunch'
     defaultValue={() => {
        console.log(product); // return null
     }}
     render={({ field }) => (
        <DatePicker
           selected={field.value}
           onChange={(date) => field.onChange(date)}
        />
     )}
  />
}
Run Code Online (Sandbox Code Playgroud)

defaultValues 在自定义挂钩中的第一次渲染时缓存

javascript reactjs react-hook-form

1
推荐指数
1
解决办法
7220
查看次数

过滤条件

我有这张桌子

User        | SecretId | Status
warheat1990 |     NULL |    REV
warheat1990 |     NULL |    COM
warheat1990 |        1 |    REV
warheat1990 |        1 |    COM
Run Code Online (Sandbox Code Playgroud)

我想过滤掉数据(Status = REV和SecretId IS NOT NULL合并),所以最终结果将是

User        | SecretId | Status
warheat1990 |     NULL |    REV
warheat1990 |     NULL |    COM
warheat1990 |        1 |    COM
Run Code Online (Sandbox Code Playgroud)

我的查询

SELECT * FROM TABLE WHERE User = 'warheat1990' AND (Status <> 'REV' AND SecretId IS NULL)
Run Code Online (Sandbox Code Playgroud)

但它没有用,因为它只给了我这条ROW.

User        | SecretId | Status
warheat1990 |     NULL |    COM …
Run Code Online (Sandbox Code Playgroud)

sql sql-server sql-server-2012

0
推荐指数
1
解决办法
60
查看次数